簡體   English   中英

將JSON(jQuery)發送到PHP並對其進行解碼

[英]Sending JSON(jQuery) to PHP and decoding it

我不能為我的生活弄清楚我做錯了什么。 看起來它應該很簡單,因為我找不到其他人有這個問題,但我不知道通過javascript(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');

我得到一個帶有單詞test的文件,但無論我做什么,我都沒有得到我發送的json數據。

有人可以分享A到Z的完整示例。感謝您的幫助。

您使用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對象“轉換”為后台的查詢字符串。

您需要以JSON格式從javascript發送數據是一種罕見的情況,但如果您想這樣做,則需要以下內容:

// 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'

jQuery無法將數據編碼為JSON,只能對其進行解碼(命名不佳的dataType參數實際上是指響應的類型)。 使用json2.js進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM