簡體   English   中英

PHP沒有從JavaScript請求中檢測POST JSON數據

[英]PHP not detecting POST JSON data from JavaScript request

對於我的應用程序必不可少的一小部分代碼,我需要一些幫助。 我正在制作一個小型點擊游戲,我希望用戶能夠通過PHP保存和加載數據到我的服務器。 我不想使用本地存儲讓任何人都難以編輯經濟和“欺騙”。 當用戶點擊我的保存按鈕時,它會觸發我的vue方法,該方法初始化保存。 我將數據轉換為JSON格式沒有問題,但是我無法讓PHP通過POST讀取這些數據。 我檢查了網絡標題,它顯示正在發送的東西,似乎PHP沒有抓住它。 我將在下面包含JS部分和PHP部分的代碼。 如果現在是array_key_exists,那么PHP只會設置為echo,因為在解決了這個問題后,我將很容易處理其余的事情。 任何幫助將不勝感激!

我試圖遵循這個,到目前為止還沒有工作將JSON數據從Javascript發送到PHP?

JS

saloOut: function() {
            var saveData = {
                saveMoney: this.money,
                saveCrystals: this.crystals,
            };
            saveData = "saveData=" + (JSON.stringify(saveData));
            var sendData = new XMLHttpRequest();
            sendData.open("POST", "salo.php", true);
            sendData.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            sendData.send(saveData);
            console.log(saveData);
        }

PHP

<?php
    if (array_key_exists("saveData", $_POST)) {
        echo "<p>SALO Ready!</p>";
    }
?>

在訪問值之前,在PHP端解碼JSON字符串,如下所示:

<?php
    if(isset($_POST['saveData'])){
        $result = json_decode($_POST['saveData'], true);
        // use $result['saveMoney'] and $result['saveCrystals'] accordingly
    }
?>

更新#1:

正如OP在下面評論的那樣, 我希望它會打印出“SALO Ready”,但它卻什么都不做

那是因為您沒有使用XMLHttpRequest對象的responseText屬性來查看從服務器收到的文本。 使用以下代碼段查看回復文字。

saloOut: function() {
    var saveData = {
        saveMoney: this.money,
        saveCrystals: this.crystals,
    };
    saveData = "saveData=" + (JSON.stringify(saveData));
    var sendData = new XMLHttpRequest();
    sendData.open("POST", "salo.php", true);
    sendData.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    sendData.send(saveData);

    sendData.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            alert(this.responseText);
        }
    };
}

參考: https//developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText

暫無
暫無

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

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