【发布时间】:2020-11-21 15:52:07
【问题描述】:
我目前正在重构我以前的一些代码,以从 jQuery 的 AJAX 函数转向 vanilla 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 源发送请求。谢谢!!!
编辑:我正在使用找到的代码here。
【问题讨论】:
-
两者不一样。 jQuery 版本不发送 json。它正在发送一个查询字符串。
-
http://arig.asuscomm.com/mn/PHP/submitNames.php的内容主体为first=Hi!,因为它是一个 POST 请求 -
我鼓励您
F12打开您的开发人员工具,转到网络选项卡,并检查发出的不同 ajax 请求。您可以通过这种方式快速查看任何差异。 -
嗯,好吧@Taplar,我会检查一下。谢谢!
-
jQuery 的
$.ajaxusesXMLHttpRequest默认发出请求,顺便说一句。
标签: javascript jquery ajax xmlhttprequest