2015-01-21 145 views
0

我试图通过java-script获取来自php web服务的数据。解析JSON时发生了我的项目错误。这样如何解析JSON对象?

<?php 
header("Content-Type:application/json"); 

try { 
    if(!empty($_POST['mobile_number'])) 
    { 
     $number = $_POST['mobile_number']; 
     $number = $_POST['user_type']; 
     deliver_response(200, "success", $number);  
    } 
    else 
    { 
     deliver_response(400, "no parameter", $number); 
    } 

} catch (Exception $e) { 
    echo("message".$e->getMessage()); 

} 


function deliver_response($status,$status_message,$data) 
{ 
    header("HTTP/1.1 $status $status_message"); 

    $response['status'] = $status; 
    $response['status_message'] = $status_message; 
    //$response['data'] = $data; 

    $json_response = json_encode($response); 
    echo $json_response;  
} 
?> 

和IM尝试

我的PHP Web服务调用Web服务上面这样

function logingAuth(){ 
    var mnumber= $("#uname").val(); 
    var utype= $("#pword").val(); 
    try{ 
    $.post("http://192.168.1.55/rest/signup.php", { mobile_number: mnumber,user_type:utype }, parseResults); 
} 
catch(err) 
{ 
alert(err.message); 
} 
    function parseResults(json){ 
     var obj = jQuery.parseJSON(json); 
     alert(obj.status); 
    } 
} 

但是这一次并不是因为变种obj = jQuery.parseJSON(json);线的工作。

如果我这样调用它的工作

function parseResults(json){ 
     alert(json.status); 

    } 

这是什么问题呢?

+0

当你parseJSON,你解码成数组。那么你不能做json.status – onegun 2015-01-21 09:14:26

回答

4

jQuery将自动识别您的响应类型并采取适当的行动。在这种情况下,它会自动将JSON反序列化为一个对象,因此当您试图对一个对象进行反序列化时,您致电parseJSON将导致错误。只需删除该行:

function parseResults(json){ 
    alert(json.status); 
} 
+0

谢谢你的快速回复。实际上,我使用jQuery mobile.is,没有这条线实现。 – Suravi 2015-01-21 09:17:31

+0

这很好,这是普通的jQuery的一部分。 jQM对此没有影响。 – 2015-01-21 09:25:10

+0

没问题,很乐意帮忙 – 2015-01-21 09:32:36