2014-03-04 81 views
0

我有一個使用getJSON和PHP的登錄。JQuery getJSON/PHP返回數據並顯示數據

現在它所做的只是檢查用戶和密碼是否有效,如果是,我想將更多信息傳遞給客戶端。

現在在服務器端我這樣做:

if ($result->num_rows) {    
    echo '{"response":{"error": "1"}}';   
} else { 
    echo '{"response":{"error": "0"}}'; 
} 

,並在客戶端上我有這樣的:

if (json.response.error == "1") { 
    data = "Welcome "+username; 
    alert(data); 
} else { 
    // Login fail 
    data = "Wrong Username/Password"; 
    alert(data); 
} 

所以基本上它只是檢查。

如何將更多信息從服務器傳遞到客戶端?

更新:我已經改變了代碼,這一點,但它現在不工作:

服務器:

if ($result->num_rows) { 

//echo '{"response":{"error": "1"}}'; 
$data = array(
'response'  => array(
'error' => 1, 
), 
'someData'  => 'data'; 
); 
print json_encode($data); 
} 

客戶:

$.getJSON("server.php", {username:username,password:password},function(data) 
{ 

alert('hello'); 
var json = JSON.parse(data); 
alert(json.responseCode); 


}); 

回答

2

在服務器端,您可以創建一個包含所需數據的陣列,然後使用json_encode()將其從服務器發送到客戶端:

$data = array(
    'response'  => array(
     'error' => 1, 
    ), 
    'someData'  => 'data', 
    ... 
); 
print json_encode($data); 

而且在客戶端:

var json = JSON.parse(data); 
alert(json.response.error); 

希望它能幫助!

+0

我已經添加了它,但它不再記錄:echo'{「response」:{「error」:「1」}}'; $ data = array( 'responseCode'=> 1, 'someData'=>'data'; ); print json_encode($ data); – Satch3000

+0

我編輯了回覆,但你也需要刪除你的'回聲'。 –

+0

我已經刪除了服務器代碼的回聲,客戶端看起來像這樣: – Satch3000

1

你必須使用jQuery.parseJSON(json)這裏的json是一個格式良好的json字符串。

從文檔:

它需要一個合式JSON字符串並返回生成的JavaScript對象。

所以你必須首先解析字符串到一個JavaScript對象。

var json = $.parseJSON(data); // data is the json string 
if (json.response.error == "1") { 
    data = "Welcome "+username; 
    alert(data); 
} else { 
    // Login fail 
    data = "Wrong Username/Password"; 
    alert(data); 
}