循环json数组时出现问题

时间:2015-08-20 09:05:09

标签: javascript jquery sql json

我从json格式的ajax调用中检索选择的一些选项。 我设置的代码用于显示select中的新选项(替换现有选项)如下:

success: function (data){
    var $select = $('#dettaglio');
    $select.html('');
    $.each(data, function(key, val){
        $select.append('<option id="' + val.id + '">' + val.text +'</option>');
    })
}

虽然json是这样的:

[
   {"id":"1","text":"J-Invest Spa"},
   {"id":"2","text":"J-A Holding S.r.l."},
   {"id":"3","text":"J-Invest Advisory & Servicing S.r.l."},
   {"id":"4","text":"J-Invest Immobiliare e Consulenza S.r.l."}
]

运行此代码会导致错误,这种错误不容易理解:

  

TypeError:'操作数e中的无效'

     

... === n ||“function”!== n&amp;&amp;(0 === t ||“number”== typeof t&amp;&amp; t&gt; 0&amp;&amp; t-1 in   e)} r = b(o); var _ = {} ...

jQuery抛出错误,但这对于查看我的代码错误无效。任何提示?

2 个答案:

答案 0 :(得分:7)

是的,我从mysql获取一个数组并使用json_encode对其进行编码。从服务器接收的数据始终为string类型。您需要解析它以转换为JSON格式。你能试试吗?

success: function(data) {
  data = JSON.parse(data);

或者,如果您使用的是旧IE,您也可以尝试:

success: function(data) {
  data = $.parseJSON(data);

答案 1 :(得分:2)

最简单的方法是通过添加以下内容来改变PHP:

for (auto& base_ptr : B)
     if (DerivedClass* p = dynamic_cast<DerivedClass *>(base_ptr))
         B.push_back(p);

就是这样。 jQuery自动设置为检测返回数据的编码。如果您以后决定发送其他内容,则只需更改标题。

警告: ANY 输出之前,此功能必须是首先执行的功能之一。否则,它会给你带来错误。