2 回答

TA貢獻1848條經(jīng)驗 獲得超10個贊
data是一個對象,您將其轉(zhuǎn)換為字符串 ( "[object Object]"),因此實際數(shù)據(jù)在您將其發(fā)送到 PHP 之前會丟失。
只需將對象本身傳遞給 jQuery,而無需將其轉(zhuǎn)換為字符串:
data: data,
然后 jQuery 將使用 PHP 將自動解碼并用于填充的標準 Form Url 編碼$_POST。
<?php
header("Content-Type: text/plain");
echo $_POST['v_Post'];
?>
然后它將在 JS 中可用:
success: function(response_data) {
alert(response_data);
},

TA貢獻1770條經(jīng)驗 獲得超3個贊
如果您檢查,則"data=" + data計算結(jié)果為data=[object Object],因為對象在連接時被強制轉(zhuǎn)換為字符串。所以這不是我們想要的。
事實上,JSON 可以提供幫助,因為它為復(fù)雜數(shù)據(jù)形成了一個漂亮、統(tǒng)一的接口。此外,您不想自己指定參數(shù)編碼(data=...作為字符串),因為 jQuery 可以為您完成,如果您只傳遞一個包含參數(shù)的對象。我還冒昧地將參數(shù)重命名為payload,因此我們沒有兩個不同的東西,既命名data又混淆了答案。你會這樣使用它:
$.ajax({
...
data: {
payload: JSON.stringify(data)
},
...
});
然后在 PHP 中,
$payload = json_decode($_POST['payload']);
我們也可以直接將 JSON 作為 POST 請求正文發(fā)送,而不是作為 POST 參數(shù),但 PHP 對訪問它并不是很好。你可以在這里看到更多。
但是,您沒有復(fù)雜的數(shù)據(jù)結(jié)構(gòu),您有三個平面變量 - 可以簡單地作為三個 POST 變量傳輸。在這種情況下,這就足夠了:
$.ajax({
...
data: data,
...
});
在 PHP 中:
$v_Post = $_POST['v_Post'];
$x = $_POST['x'];
$y = $_POST['y'];
添加回答
舉報