سؤال

وأنا باستخدام الكائن JS لإنشاء الرسوم البيانية مع جوجل التصور. أحاول أن تصميم مصدر البيانات. في البداية، أنا خلق كائن JS من جانب العميل.

var JSONObject = {
    cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
        {id: 'soldpens', label: 'Sold Pens', type: 'number'}],
    rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
        {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
     {c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}]  
};

var data = new google.visualization.DataTable(JSONObject, 0.5);

والآن أنا بحاجة لجلب البيانات بشكل حيوي. ولذا فإنني إرسال طلب AJAX إلى الصفحة التي يعرضها سلسلة JSON:

 "cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
  rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
      {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"

وهذا يمكنني حفظ إلى متغير:

var var1 = "cols: [{i ....... 66}]}"

ووالعرض و

alert(var1);

والآن مهمتي هي لإنشاء كائن JS من هذه السلسلة. هذا لا يعمل. عند استخدام كائن JS، كل شيء يعمل بشكل جيد وأنا قادرة على الحصول على الرسم البياني الخاص بي المطلوبة. الآن إذا حاولت وضع نفس القيمة من سلسلة من طلب AJAX الذي أكد لي من رسالة تنبيه إلى كائن ن، لم يتم الحصول على إنشاء الكائن بشكل صحيح. واسمحوا لي أن أعرف رأيك وأي تصحيح أو نصائح.

نصائح أخرى

ويمكنك استخدام وحدة التقييم (jsonString) إذا كنت تثق في البيانات في السلسلة، وإلا فإنك سوف تحتاج إلى تحليل بشكل صحيح - تحقق json.org لبعض نماذج التعليمات البرمجية

والسلسلة في سؤالك ليست سلسلة سلمان صالحة. من json.org موقع :

<اقتباس فقرة>   

وبنيت JSON على هيكلين:

* A collection of name/value pairs. In various languages, this is 
  realized as an object, record, struct, dictionary, hash table, keyed list, or
  associative array.
* An ordered list of values. In most languages, this is realized as an
  array, vector, list, or sequence.

وأساسا فإن سلسلة سلمان تبدأ دائما مع أي {أو [.

وبعد ذلك كما قالAndy E وCryo يمكنك تحليل السلسلة مع json2.js أو بعض المكتبات الأخرى.

وIMHO يجب تجنب حدة التقييم لأنها سوف أي برنامج جافا سكريبت، لذلك قد تكبد في القضايا الأمنية.

ويمكنك استخدام هذا مكتبة من JSON.org ترجمة سلسلة الخاص بك إلى كائن JSON.

var var1_obj = JSON.parse(var1);

وأو يمكنك استخدام مكتبة مسج-سلمان كذلك.

var var1_obj = $.toJSON(var1);

والسلسلة كنت ستعود ليست صالحة JSON. أسماء في احتياجات الكائنات التي سيتم نقلت والسلسلة بأكملها يحتاج إلى أن توضع في { … } لتشكيل كائن. JSON أيضا لا يمكن أن تحتوي على شيء من هذا القبيل new Date(). JSON هو مجرد مجموعة فرعية صغيرة من جافا سكريبت لديها سلاسل فقط، أرقام، والكائنات، المصفوفات، true، false وnull.

JSON قواعد للحصول على مزيد من المعلومات.

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