2010-05-09 103 views
3

我不能爲我的生活弄清楚我做錯了什麼。它似乎應該很簡單,因爲我找不到這個問題的任何其他人,但我不知道通過JavaScript(jQuery)發送基本數據到PHP並解碼它。爲了簡便起見,這就是我:發送JSON(jQuery)到PHP並解碼它

JAVASCRIPT

var json_data = { "name" : "john doe" }; 

$.ajax({ 
    type: "POST", 
    url: "../bin/process.php", 
    dataType: "json", 
    data: json_data 
    }); 

和我的PHP文件

$arr = json_decode("json_data", true); 

$fp = fopen('data.txt', "w"); 
fwrite($fp, $arr['name']); 
fclose($fp); 

我正在寫的文件,在沒有結束它。如果我做的:

fwrite($fp, 'test'); 

我得到的文件在它的單詞測試,但無論我做什麼,我不明白我發送的JSON數據。

有人可以分享A到Z的一個完整的例子。感謝您的任何幫助。

回答

5

您使用jQuery製作的ajax請求將發送參數'name',值爲'john doe',而不是整個對象。如果您想發送整個對象,你必須通過這樣的:

data: { parameters: json_data } 

在PHP端,您可以從$ _POST全局變量。使用你的榜樣,你可以使用:

$name = $_POST['name']; 

或者,如果你發送的整個對象,用我的例子:

$params = $_POST['parameters']; 

沒有必要使用json_decode(),因爲你拉的參數從$ _POST數組中出來的將是本地PHP變量。

你只需要使用它,如果你有一個json字符串,你想把它變成一個PHP變量,這不是這裏的情況,因爲jQuery會將javascript對象「轉換」爲查詢字符串的背景。

這是你需要從JavaScript的JSON形式發送數據的,而是一種罕見的情況下,如果你想要做的,你需要的東西,如:

// JS 

var person = "{ name: 'John Doe' }"; // notice the double quotes here, this is a string, and not an object 
$.ajax({ 
    type: "POST", 
    url: "../bin/process.php", 
    dataType: "json", 
    data: { json: person } 
    }); 

// PHP 

$json = $_POST['json']; // $json is a string 
$person = json_decode($json); // $person is an array with a key 'name' 
+0

謝謝,我想你已經很好地回答了我的問題,併爲我澄清了很多地獄。你能舉一個JSON編碼的例子,以及如何在Javascript中編碼某些東西並用PHP解碼它?如果你能幫助我,請給我檢查你的答案是否正確。 – dscher 2010-05-09 22:01:36

+0

包含一個示例。 – 2010-05-09 22:29:38

+0

謝謝,你太棒了。 – dscher 2010-05-09 22:47:57

1

的jQuery不能將數據編碼到JSON,只有解碼它(名字dataType實際上指的是響應的類型)。使用json2.js進行編碼。