سؤال

قد يكون، ليس مشكلة مشكلة بالنسبة لك. لكنني أحاول لأول مرة مع تسلسل JSON. وأيضا قراءة المواد الأخرى في stackowerflow.

لقد قمت بإنشاء نموذج بيانات إطار الكيان. ثم حسب الطريقة احصل على جميع البيانات من كائن:

private uqsEntities _db = new uqsEntities();
//get all data from table sysMainTableColumns where tableName=paramtableName
public List<sysMainTableColumns> getDataAboutMainTable(string tableName)
{
     return (from column in _db.sysMainTableColumns
                    where column.TableName==tableName
                    select column).ToList();

}

بلدي webservice:

public string getDataAboutMainTable()
{
    penta.DAC.Tables dictTable = new penta.DAC.Tables();
    var result = dictTable.getDataAboutMainTable("1");
    return new JavaScriptSerializer().Serialize(result);
}

و jquery ajax طريقة

$('#loadData').click(function() {
            $.ajax({
                type: "POST",
                url: "WS/ConstructorWS.asmx/getDataAboutMainTable",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#jsonResponse").html(msg);

                    var data = eval("(" + msg + ")");
                    //do something with data
                },
                error: function(msg) {

                }
            });
        });

فشل (من Fairbug):

missing ] after element list [Break on this error] var data = eval("(" + msg + ")");

استجابة Ajax (بواسطة Firebug إذا قمت بإزالة var data = eval("(" + msg + ")")):

{"d":"[{\"ID\":1,\"TableName\":\"1\",\"Name\":\"d\",\"FullName\":\"f\",\"Type\":\"nvarchar(50)\",\"MeasurementUnit\":\"t         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":1}],\"IsTemporary\":false}},{\"ID\":2,\"TableName\":\"1\",\"Name\":\"e\",\"FullName\":\"e\",\"Type\":\"int\",\"MeasurementUnit\":\"r         \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":2}],\"IsTemporary\":false}}]"}

مشكلة مع البيانات, ، فشل الكود هناك. وأعتقد أنني لا نستخدم Javascriptserializer (). تسلسل () طريقة جيدة جدا.

من فضلك، أخبرني، يا لها من خطأ كبير صنعته في كود C #؟

هل كانت مفيدة؟

المحلول

  1. لا تحتاج eval. وبعد jQuery يفعل ذلك من أجلك عندما تحدد dataType: "json"
  2. إنها فكرة سيئة لكيانات تسلسل مباشرة JavaScriptSerializer سوف تموت إذا حدث أحد احتواء مرجع دائري.
  3. لا تنسى dفي يتم إدراجها بواسطة خدمات WCF للتغلب على ثقب أمان في بعض المتصفحات عندما يكون كائن الجذر صفيفا.

نصائح أخرى

هل حاولت تصحيح الأخطاء مع Firebug أو Fiddler لمعرفة ما يبدو محتوى JSON؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top