2015-01-21 195 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