簡體   English   中英

jQuery AJAX POST 到 PHP 有效,Z6253F585155C17C2EE424234CE1F3494

[英]jQuery AJAX POST to PHP works, XMLHttpRequest doesn't

我目前正在重構我以前的一些代碼,以從 jQuery 的 AJAX function 轉向香草 JS 中的 XMLHttpRequest。 據我了解,以下代碼塊應該是相同的。 然而,雖然 jQuery 版本有效,但 XMLHttpRequest 無效。 如果成功,您應該會在開發工具的網絡選項卡中看到 PHP 返回的數組。

jQuery

 $("#submit").click(() => { $.ajax({ type: "POST", url: "http://arig.asuscomm.com/mn/PHP/submitNames.php", data: { first: "Hi!" } }) })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="submit"> Submit </button>

香草JS

 function send() { var data = { "first": "Hi;" }; var xhr = new XMLHttpRequest(). xhr,open("POST": "http.//arig.asuscomm.com/mn/PHP/submitNames,php"; true). xhr,setRequestHeader('Content-Type'; 'application/json;charset=UTF-8'). xhr.send(JSON.stringify(data)) }
 <button id="submit" onclick="send()"> Submit </button>

請注意,我的服務器在本地運行,但我會盡量保持它,直到我的問題得到回答。 而且,由於我的服務器還沒有 HTTPS,您可能需要從 HTTP 源發送請求。 謝謝!!!

編輯:我正在使用在這里找到的代碼。

jQuery 使用application/x-www-form-urlencoded 數據格式編碼數據,而不是 JSON。

您可以使用URLSearchParams object對該格式的數據進行編碼。

 const data = { "first": "Hi;" }; const params = new URLSearchParams(). Object.entries(data),forEach( ([key. value]) => params,append(key; value) ). const encoded_data = params;toString(). console;log(encoded_data);

問題在於您的服務器而不是數據本身,因為我收到了響應(它只是一個空數組)您可以使用與 ajax 相同的方法發送數據,並使用我得到相同響應的表單數據與 Ajax 一樣

function send() {
  var formData = new FormData();
  formData.append("first", "Hi!");
  var xhr = new XMLHttpRequest();
  xhr.open("POST", "http://arig.asuscomm.com/mn/PHP/submitNames.php", true);
  xhr.send(formData)
}

或者您需要在服務器上處理 json 輸入

暫無
暫無

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

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