簡體   English   中英

使用ajax在服務器端恢復json時出錯

[英]Error reciving json at server side using ajax

我試圖將帶有ajax的json發送到php文件,因為我嘗試了下面的代碼

  1. 使用jquery

     var dummyData = {'bob': 'foo', 'paul': 'dog'}; var ajaxRequest = $.ajax({ url: "json_handler.php", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify(dummyData ), dataType: "json" }); ajaxRequest.done(function (response, textStatus, jqXHR) { console.log(response + textStatus + jqXHR); alert('sd'); }); ajaxRequest.fail(function (e) { console.log(e); }); 

我只是在json_handler.phpvar_dump($_REQUEST)並且ajax請求一直在失敗並且在響應文本中什么也得不到

我試過的時候

$json = file_get_contents('php://input');
var_dump($json);

我得到了json,但ajax請求仍然失敗。

我也嘗試過這個javascript,我的代碼如下

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = stateHandler;
httpRequest.open("POST", "json_handler.php", true);
httpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
httpRequest.send( JSON.stringify(dummyData ));

這是我的控制台日志

在此輸入圖像描述

看看因為你的ajax有dataType: "json"所以它期待json格式的響應,就像{key:value} or [{k:v}, {k:v}, ....]而你是不echo任何json結構,所以這是你的ajax失敗的地方。

在我看來你必須這樣寫:

$json = file_get_contents('php://input');
echo json_encode($json);

您的請求似乎很好,但為什么要對您的JSON進行字符串化?

您可以發布有效負載數據:

data: dummyData

要調試和測試您的json帖子,您可以使用擴展名作為Postman或Advanced Rest Client。

暫無
暫無

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

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