簡體   English   中英

如何向 PHP 后端發出帶有參數的 AJAX POST 請求?

[英]How do I make an AJAX POST request with parameters to a PHP backend?

這是對標記為重復的上一個問題的更新( 如何向 PHP 發送帶有參數的 AJAX POST 請求?

我正在向 PHP 后端發送 AJAX 請求。

Javascript 函數發出和接收請求:

var httpRequest;

function makeRequest(){
    httpRequest = new XMLHttpRequest();

    httpRequest.onreadystatechange = receiveResponse;
    httpRequest.open("POST", "ajax_handler.php", true);
    httpRequest.setRequestHeader('Content-Type', 'application/json');
    httpRequest.send(JSON.stringify({key:"value"}));
}

function receiveResponse() {
    if (httpRequest.readyState === XMLHttpRequest.DONE) {
        if (httpRequest.status === 200) {
            console.log(httpRequest.responseText);
        }
    }
}

PHP 后端ajax_handler.php處理請求:

<?php
    $data = file_get_contents('php://input');
    echo $data;
?>

我原來的帖子被標記為這個問題的副本。 該頁面沒有明確的示例,盡管我能夠推斷出我應該在 PHP 后端使用file_get_contents('php://input')而不是$_POST ,如圖所示。

使用顯示的代碼,接收 function 中的console.log(httpRequest.responseText){"key":"value"}記錄到控制台。 但是,如果我嘗試將其解釋為 PHP 后端中的數組

<?php
    $data = file_get_contents('php://input');
    echo $data["key"];
?>

響應記錄{到控制台而不是預期value

除了使用'php://input'之外, 鏈接副本中的幾個響應還使用 PHP 后端中的json_decode() function。

但是,如果我在后端包含此 function ,則為

<?php
    $data = json_decode(file_get_contents('php://input'));
    echo $data;
?>

整個 AJAX 調用中斷。 它被設置為在 window 單擊時觸發,但在包含json_decode()后,在 window 單擊時沒有任何反應,調用沒有返回任何內容,也沒有任何內容記錄到控制台。

如果沒有示例,我很難判斷我是否在執行 AJAX 循環錯誤,或者我的代碼中的其他地方是否存在不同的問題。 所以,為了所有神聖的事物,請有人將我發布或鏈接到一個獨立的示例,展示如何制作、處理和接收帶有 PHP 后端參數的 AJAX 調用? 令人難以理解的是,這在互聯網上的某個地方還不存在,但我一直在搜索和詢問幾天,但我在任何地方都找不到一個例子。 這沒有 jQuery。

先感謝您。

創建一個mcve並逐個調試。

<?php
   $data = json_decode('{ "test": 123 }');
   echo $data;

請問output:

可恢復的致命錯誤:class stdClass 的 Object 無法在 /...../test.php 中的第 4 行轉換為字符串

你有一個 object 代表從 JSON 解碼的數據。 您需要回應其中有用的部分。 例如

<?php
   $data = json_decode('{ "test": 123 }');
   echo $data->test;

暫無
暫無

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

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