2015-12-10 167 views
-1

请你的帮助,我有问题在我的ajax请求。我有回报的文本数据,我想用json_parse将其转换为JSON,但它简化版,工作JSON不工作在JavaScript ajax请求

的数据,从Ajax请求返回如下:

data = "{"name":"ehab","mobile":"xxx"}{"name":"Hamza","mobile":"zzzz"}" 

我想这个数据转换到JSON我使用下面的AJAX请求

$.ajax({ 
       type: "POST", 
       url: "getGroup.php", 
       data: { "searchText" : number}, 
       success: function(data) 
       { 
       data = JSON.parse(data); 

       debugger; 
       }, 
       error: function (error) { 
       debugger; 
       } 

如果我使用这样的错误消息返回

Uncaught SyntaxError: Unexpected token { 

我的PHP文件阵

$sql ="select * from recipients where `groupid`='$searchText'"; 

     $res = mysql_query($sql); 
     $num = mysql_num_rows($res); 
     $data=''; 
     if(mysql_num_rows($res)> 0) 
        { 
        for($i=0;$i<mysql_num_rows($res);$i++) { 
        $row=mysql_fetch_assoc($res); 


        $output = array('name'=>$row['rec_name'], 
       'mobile'=>$row['mobile_number']); 

        echo json_encode($output); 
        } 

请指教

+1

http://jsonlint.com/检查你的json格式。 –

回答

4

的JSON是无效

{"name":"ehab","mobile":"xxx"}{"name":"Hamza","mobile":"zzzz"} 
Here -------------------------^ 

你不能有两个对象在顶层这样。

您可以通过在[...],它包裹和分离的条目使它的数组:

[{"name":"ehab","mobile":"xxx"},{"name":"Hamza","mobile":"zzzz"}] 

然后你访问它是这样的:

console.log(data[0].name); // "ehab" 
console.log(data[1].name); // "Hamza" 

或者使用一个循环, forEach


Side no te:如果您的服务器返回正确识别的有效JSON,那么在调用您的success函数之前,jQuery将为您解析它,因此您的代码中不需要JSON.parse

+0

可以请你帮我怎么写JSON数组? $ sql =“select * from recipients where groupid' ='$ searchText'”; \t \t $ res = mysql_query($ sql); \t \t $ num = mysql_num_rows($ res); \t \t $ data =''; \t \t如果(mysql_num_rows($ RES)> 0) \t \t \t \t \t { \t \t \t \t \t为($ I = 0; $ I $行[ 'rec_name'], '移动'=> $行[ 'MOBILE_NUMBER']) ; \t \t \t \t \t echo json_encode($ output); \t \t \t \t \t} –

+0

我在问题中添加了php代码,请您帮忙以正确的方式写出json数组 –

+0

创建一个数组。每次在循环中添加一个新对象。 *只将*最终结果*转换为JSON。 – Quentin