2014-02-23 881 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

相關問題