我已經建立了一個基本的API,我知道它的工作,因爲與郵遞員來的請求通過正常,我有麻煩的是通過AJAX傳遞到PHP文件的JSON對象。傳遞JSON對象與AJAX到PHP
的AJAX部分
function add_book(){
if(validate()){
var jsonData = {};
jsonData.Price = document.getElementsByName("Price")[0].value;
jsonData.Title = document.getElementsByName("Title")[0].value;
jsonData.Author = document.getElementsByName("Author")[0].value;
jsonData.Genre = document.getElementsByName("select_dropdown")[0].value;
alert(JSON.stringify(jsonData));
var request = new XMLHttpRequest();
var url = "/books.php";
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
}
}
request.send(jsonData);
}
}
例如,這是警告我從字符串化對象
{ 「價格」 得到 「23」, 「標題」: 「asdas」, 「作者」: 「dasda」,「Genre」:「科幻小說」}
我基本上可以將這個字符串複製/粘貼到郵遞員,它的工作原理如下。現在
到PHP的一部分
$json_str = file_get_contents('php://input');
$json_obj = json_decode($json_str);
if(!empty($json_obj->Price) && !empty($json_obj->Genre) && !empty($json_obj->Author) && !empty($json_obj->Title)){
的,如果總是返回false,而它不應該,郵遞員再次請求傳遞真正的。
============================================== ==========================編輯:
我設法找到問題的根源。我做了一個函數來檢查json是否有效,結果不是,在php部分沒有問題,因爲它結果。這裏是萬一有人功能需要它/奇觀:
function isValidJSON($str) {
json_decode($str);
return json_last_error() == JSON_ERROR_NONE;
}
============================== ===========================================編輯2:
問題在request.send(jsonData);
部分。修復它與request.send(JSON.stringify(jsonData));
感謝您的時間!
沒有足夠的代碼在這裏幫助,尤其是PHP。你能獲得文件內容嗎? –
如果在'if'語句之前執行'var_dump($ json_obj);'之前會打印什麼?但與瀏覽器,而不是郵遞員。 – matiaslauriti
感謝您的回答,我設法找到了問題的根源。 我做了一個函數來檢查JSON是否有效,結果不是,在PHP部分沒有問題,因爲它變成了 –