[英]How to capture json data on php that is sent with ajax (no jquery)
我正在使用ajax和純javascript將json數據發送到服務器。 如何獲取將在php頁面上顯示json內容的$_POST
索引?
ajax將請求作為key=value
發送到服務器,同時,通過使用內容類型'application / json',我在下面的鏈接上得到了一個示例,因為json數據(stringfy)是直接發送而沒有key=value
。
在不使用JQuery的情況下,將JSON發送到服務器並獲取JSON作為回報
在php方面,用於發布請求,下面給出了示例。
$v = json_decode(stripslashes(file_get_contents("php://input")))
現在我不明白php://input
在這里表示什么,因為json數據已發送到同一頁面。 我嘗試了file_get_contents('https://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']);
但它什么也沒返回。 我嘗試使用var_dump($_POST)
將所有內容查看為數組,但是我得到的只是array(0){}
。 那么,我如何真正捕獲發送到php頁面的ajax(json)請求? 這是代碼示例:
var data = {
name : "john",
Friend : "Jonny",
Bestie : "johnson",
neighbour: "john doe"
};
json = JSON.stringify(data);
var ajax = new XMLHttpRequest(), url = '../handler.php';
ajax.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
};
};
ajax.open('POST', url, true);
ajax.setRequestHeader('content-type', 'application/json');
ajax.send(json);
PHP
header("Content-Type: application/json");
var_dump($_POST);
file_get_contents('https://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']);
我希望json字符串存在於$ _POST變量中,並且在解碼json字符串后可以通過其索引訪問,但是我得到array(0){}
,為null
或根本不顯示任何內容
要獲取數組,請將true
參數添加到json_decode()
。 在您的代碼中:
$body = json_decode(file_get_contents("php://input"), true);
var_export($body);
要在$ _POST中添加JSON數據,可以使用此代碼。
在JS中:
json = JSON.stringify(data);
var ajax = new XMLHttpRequest(), url = '../handler.php';
ajax.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
};
};
ajax.open('POST', url, true);
ajax.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
ajax.send('jsn='+json);
在PHP中:
$arr = isset($_POST['jsn']) ? json_decode($_POST['jsn'], true) :[];
var_export($arr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.