[英]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.