2014-02-23 857 views
1

我得到错误:SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data错误语法错误:JSON.parse:后JSON数据意外非空白字符

我的代码:

<script> 
    $(document).ready(function() { 
     $('.edit1').on('change', function() { 
       arr = $(this).attr('class').split(" "); 
       var clientid = document.getElementById("client").value; 
       account_id = document.getElementById("account_id").value; 
       $(this).parent().next().find('input:checkbox').attr("checked", true); 
       $.ajax({ 
        type: "POST", 
        url: "clientnetworkpricelist/routestatusupdate.php", 
        data: "value=" + $(this).val() + "&rowid=" + arr[2] + "&field=" + arr[1] + "&clientid=" + clientid + "&account_id=" + account_id, 
        success: function (result) { 
         data = jQuery.parseJSON(result); //added line 

         var obj = data; 

         $('#CPH_GridView1_Status' + arr[2]).empty(); 
         $('#CPH_GridView1_Status' + arr[2]).append(data.status); 

         $('.ajax').html($(this).val()); 
         $('.ajax').removeClass('ajax'); 
        } 
       }); 
      } 
     ); 
    }); 
</script> 

而且JSON输出:

{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"} 
+0

您是否粘贴了4次JSON输出? – Satpal

+1

就像错误所说 - 你的JSON是无效的。你不能在那儿(他们有什么?) –

+2

你检查过JSONLint吗?你的JSON无效。 http://jsonlint.com/ – Utkanos

回答

6

问题是,在你的JSON输出中,你有3个对象:

{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"} 
{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"} 
{"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"} 

它们只是内联在一起。尝试修改您的PHP脚本以将所有对象推入数组,然后将该数组作为输出返回以获得如下结果:

[ 
    {"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}, 
    {"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"}, 
    {"status":"<img src=\"image\/Equalf.png\" \/>","seleniumrouteupdate":"1","routeupdate":"100"} 
] 
+0

感谢您的回复,您可以告诉我如何去做 – arok

+1

可能在PHP脚本中,您正在将数组中的所有对象都打印出来:'foreach($ objs as $ o){echo json_encode($ ○); }'。如果我是正确的,而不是: a)如果$ objs是数组,使用'echo json_encode($ objs);',b)如果它是迭代器''echo json_encode(iterator_to_array($ objs))',c)else:让它们代替打印它们,将它们推入数组中,然后打印该数组的JSON。 –

+0

我只是这样做 '$ result = array(); $ result ['status'] =''; $ result ['seleniumrouteupdate'] = $ seleniumrouteupdaterow; $ result ['routeupdate'] = $ routeupdate; echo json_encode($ result);' – arok

相关问题