0

我正在使用 XMLHttpRequest 调用 ASMX Web 服务。在他们用阿拉伯语更新数据之前它工作正常,我注意到响应文本中有一些 HTML 标记,如下所示:

{"articles":[{"id":"198715","name":"المستقبل والاشتراكي يقاطعان: ساعات على الحسم","date":"Mon 13 May 2013 - 5:11:00 PM","description" :"

عاا期ةاا饵المص已ة。

انقسام عامودي، تظهّر أكثر بعد انتهاء اجتماع هيئة مكتب مجلس النواب من دون اتفاق وبالتالي الابقاء على \"الاقتراح الارثوذكسي\" بندا وحيدا على جدول اعمال الجلسة العامة في 15 أيار.

عدم الاتفاق تبعه اتفاق على عدم المشاركة في الجلسة من قبل تيار المستقبل ومعه الاشتراكي والنواب المستقلون، فيما تبقي \"الكتائب\" على صمتها، وكذلك \"القوات\".

موقف المستقبل اوضحه النائب احمد فتفت في حديث لوكالة \"المركزية\" حيث جدد التأكيد ان القانون \"الارثوذكسي\" غير شرعي لانه لم يقرّ في مكتب المجلس، مشيراً الى ان \"الرئيس نبيه بري تجاوز صلاحياته في هذا الموضوع، وتجاوز كل الاعراف التي كنّا نتعاطى بها حتى اليوم。

وكان فتفت زار ومستشار الرئيس سعد الحريري محمد شطح، رئيس حزب \"الكتائب\" أمين الجميل في بيت الكتائب المركزي في الصيفي، حيث \"تم التباحث بالأوضاع العامة، خصوصا موضوع قانون الإنتخابات\"، من دون ان تتوضح الرؤية الكتائبية.

الى ذلك، فقد اكد امين سر هيئة المكتب النائب مروان حمادة ان \"اي جدول توزعه امانة المجلس من دون اقراره المسبق في هيئة المكتب يعتبر غير قانوني ومخالفا للنظام الداخلي\"، مشددا على ان \"عقد الجلسة في هذا الشكل يجعلها غير ميثاقية\ ”。

最新消息

","mainImage":" http://mytv.com/pictures/articles/130513061232124.jpg ","source":"","sourceImage":"","author":"","authorImage":" ","keywords":[{"title":""}],"photos":[],"videos":[]}

这是我的调用函数:

smart.apiRequestSync = function(host,operation,param,baseEntity, callBack){
  var url = "";
  var querystr='';
  if (req != null)
    req.destroy();
  req = new XMLHttpRequest();
  req.onreadystatechange=function() {
    if (req.readyState==4 && req.status==200) {
      if (req.responseText.overrideMimeType) {
        req.responseText.overrideMimeType("application/json");
      }
      var returnResult = req.responseText;
      //returnResult=returnResult.replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi, '');
      alert(returnResult);
      var result = null;
      if (baseEntity == "" || typeof(baseEntity) == "undefined")
        result= $j.parseJSON(returnResult);
      else {
        result= $j.parseJSON(returnResult);
        result = result[baseEntity];
      }
      callBack(result);
    }
  }
  for(var i=0; i < param.length;i++) {
    if(i%2==0) {
      querystr += param[i];
    } else {
      if(i==((param.length)-1)) {
        querystr +='='+param[i]
      } else {
        querystr +='='+param[i]+'&';
      }
    }
  }
  //HOST//operation//?par1=value1 &par2=val2.....parN=valN
  url=host+operation+querystr;
  try{
    var contentType = "application/x-www-form-urlencoded ; charset=UTF-8";
    req.open("GET", url, false);
    req.setRequestHeader('Content-Type', contentType);
    req.send();
  } catch (err){}
};

错误是:

SyntaxError:无法解析 JSON 字符串

有人知道我该如何解决这个问题吗?

4

2 回答 2

1

JSON 中的字符串中不能有实际的换行符控制字符。所有换行符都需要转换\n或删除。

您还缺少数组和根对象的末尾:

  ]
}
于 2013-05-13T16:33:45.883 回答
1

JSON 不关心编码。

{"articles":[{"id":"198715","name":"المستقبل والاشتراكي يقاطعان: ساعاتعلى الحسم","date":"Mon 13 May 2013 - 5:11:00PM","description":"<p>ساعات على الجلسة العامة المصيرية تمر سريعة فيالجدول الزمني لقوى 14 آذار غير المتوافقة حتى اللحظة على قانون يخرجهامنتصرة، اقله، امام الرأي العام...</p><p>انقسام عامودي، تظهّر أكثر بعدانتهاء اجتماع هيئة مكتب مجلس النواب من دون اتفاق وبالتالي الابقاء على\"الاقتراح الارثوذكسي\" بندا وحيدا على جدول اعمال الجلسة العامة في 15أيار.</p><p>عدم الاتفاق تبعه اتفاق على عدم المشاركة في الجلسة من قبلتيار المستقبل ومعه الاشتراكي والنواب المستقلون، فيما تبقي \"الكتائب\"على صمتها، وكذلك \"القوات\".</p><p</p><p>موقف المستقبل اوضحه النائباحمد فتفت في حديث لوكالة \"المركزية\" حيث جدد التأكيد ان القانون\"الارثوذكسي\" غير شرعي لانه لم يقرّ في مكتب المجلس، مشيراً الى ان\"الرئيس نبيه بري تجاوز صلاحياته في هذا الموضوع، وتجاوز كل الاعرافالتي كنّا نتعاطى بها حتى اليوم.</p><p</p><p>وكان فتفت زار ومستشارالرئيس سعد الحريري محمد شطح، رئيس حزب \"الكتائب\" أمين الجميل في بيتالكتائب المركزي في الصيفي، حيث \"تم التباحث بالأوضاع العامة، خصوصاموضوع قانون الإنتخابات\"، من دون ان تتوضح الرؤية الكتائبية.</p><p></p><p>الى ذلك، فقد اكد امين سر هيئة المكتب النائب مروان حمادة ان \"ايجدول توزعه امانة المجلس من دون اقراره المسبق في هيئة المكتب يعتبر غيرقانوني ومخالفا للنظام الداخلي\"، مشددا على ان \"عقد الجلسة في هذاالشكل يجعلها غير ميثاقية\".</p><p</p><p>تزامنا، رد المجلس الدستوريطلب إبطال تعليق المهل في قانون الانتخاب وقبل المراجعة الواردة فيالمهلةالقانونية.</p>","mainImage":"http://mytv.com/pictures/articles/130513061232124.jpg","source":"","sourceImage":"","author":"","authorImage":"","keywords":[{"title":""}],"photos":[],"videos":[]}]}

http://jsonlint.com/似乎认为这是有效的。我在最后添加了一个缺失的]}

于 2013-05-13T15:32:12.910 回答