簡體   English   中英

我的AJAX發布變量未獲取我的PHP

[英]My AJAX post variable is not getting to my PHP

我做了一個AJAX函數,它確實可以工作,但是我無法用PHP獲得該變量。 這是我的代碼:

// Validate signup
function validateSignup(){
    // Get values
    var username = document.getElementById("pm_username").value;
    var email = document.getElementById("pm_email").value;
    var password = document.getElementById("pm_password").value;
    // Make new object
    var data = {};
    // Make array from object
    data['data'] = [];

    // If values are not empty...
    if(username !== "" || email !== "" || password !== ""){
        data['data'].push(email, username, password);
        // Convert data to JSON string and make new XMLHttpRequest
        var json = JSON.stringify(data['data']), xhr = new XMLHttpRequest();

        // Page to open
        xhr.open("POST", "ajax/signup.php", true);
        // Set header to POST
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        // Send values
        xhr.send(json);
        console.log(json);

        xhr.onload = function(){
            console.log(xhr.responseText);
        }

    }else{ // ...or throw new exception
        throw("Some thing was not filled in!");
    }
}

它可以工作,但是我不知道如何在PHP中獲取JSON變量。 這是我的PHP代碼(簡單):

<?php

$json = $_POST['json'];
echo $json;
echo "Test";

?>

它起作用,因為控制台中顯示了“ Test”回顯。 但是,我回來了:

<br />
<b>Notice</b>:  Undefined index: json in <b>G:\usbwebserver\root\pokemonisle\ajax\signup.php</b> on line <b>3</b><br />
Test 

這意味着未識別出$ _POST ['JSON']。 我不使用jQuery,因為我想學習XMLHttpRequests的工作方式。

您的POST數組不包含名為json的字段。

請嘗試以下操作:

<?php 
var_dump($_POST);
?>

檢查您得到的字段。

為防止出現錯誤,您可以嘗試:

<?php
if(isset($_POST['json']))
{
    $json = $_POST['json'];
    echo $json;
}
?>

類似地,您可以使用其他變量:

<?php
if(isset($_POST['username']))
{
    $username = $_POST['username'];
    echo $username;
}
?>

您不會發送名為“ json”的帖子數據,因此無法在服務器端獲取它。

嘗試像這樣對數據對象進行字符串化

var json = "json="+JSON.stringify(data['data']);

並得到它

$json = $_POST['json'];

您可以查看此鏈接。 使用XMLHttpRequest發送POST數據

當您對數組進行“ JSON.stringify(data ['data'])”時,將生成一個字符串。

例如這個的輸出

var name ="abc";
var surname ="xyz";
var data ={};
data['data']=[];
data['data'].push(name, surname);
var json = JSON.stringify(data);
console.log(json); 

應該

{ “數據”:[ “ABC”, “XYZ”]}

$ _POST ['json']應該給你什么。

$ _POST ['name'](以表單形式)為您提供字段用戶名的值。

暫無
暫無

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

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