簡體   English   中英

如何捕獲與ajax發送的php上的json數據(無jquery)

[英]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);

來源: https : //coursesweb.net/ajax/json-from-javascript-php

暫無
暫無

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

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