Javascript对Jquery调用的AJAX调用
为了让我的代码几乎完全用Jquery编写,我想在Jquery中重写一个AJAX调用 这是一个从网页到Tomcat servlet的调用 与我目前的情况类似的代码:Javascript对Jquery调用的AJAX调用,javascript,jquery,Javascript,Jquery,为了让我的代码几乎完全用Jquery编写,我想在Jquery中重写一个AJAX调用 这是一个从网页到Tomcat servlet的调用 与我目前的情况类似的代码: var http = new XMLhttpRequest(); var url = "http://example.com/MessageController?action=send"; http.onreadystatechange = function () if (http.readyState == 4) { if
var http = new XMLhttpRequest();
var url = "http://example.com/MessageController?action=send";
http.onreadystatechange = function ()
if (http.readyState == 4)
{
if (http.status == 200){ var response = http.responseText;}
else {/*code2*/}
};
http.async = false;
http.open("POST", url, true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(string);
哪种方法最好.ajax
或.post
?你能帮我用一些伪代码来开始吗?使用或(当你使用POST时):
使用哪一个并不重要,因为.post
是的缩写。ajax
可以使用jQuery
假设
MessageController
是您域中的某个url,并且您知道您希望您的调用是异步的吗?您当前的调用将被阻止,因为您已将http.async=false设置为,而jquery.ajax在默认情况下是异步的。不确定。这很好用。异步,不会重新加载整个网页吗?异步意味着您的AJAX调用不会阻止进一步的javascript代码,通常更重要的是,不会阻止浏览器的UI线程。换句话说,浏览器在等待从服务器获取数据时不会“挂起”。哦,是的,我需要浏览器挂起,实际上我做了一个freezeDiv
来等待响应。好评论!同步请求几乎总是导致糟糕的用户体验。在大多数情况下,您可以通过发出异步请求并手动(通过javascript)防止您的用户在请求完成之前执行可能导致问题的操作来获得更好的结果。这可能需要更多的前期工作,但它可能会让你免于一些大麻烦,甚至浏览器崩溃。你能针对我的情况重写一点吗?比如我在哪里写内容类型,我想传递的字符串在哪里…你想发布的数据进入数据(我已经把你的操作放在那里),如果你想修改默认的内容类型(即application/x-www-form-urlencoded;charset=UTF-8
)然后您可以使用contentType:'application/x-www-form-urlencoded;charset=UTF-8'
,可以在api文档中找到。我将在问题中再次尝试重写。好的,我已经编辑了我的答案,现在它包含了所有请求的选项。对Q进行了编辑。如何在您的示例中捕获var响应
?谢谢。不理解->在jquery文档中,数据是要发送到服务器的数据,但是,您编写的响应是在数据变量中。请写,“字符串”在哪里。另外,如何在此处设置异步“false”?serer的数据是第二个参数(操作:“发送”)。键名为“action”,值为“send”。你可以在这里给任何东西。来自服务器的响应将在变量数据中可用(您可以为此变量指定任何名称)。使用firebug并查看将要发送的数据和返回的数据将与ResponseAbout同源策略检查等效
$.ajax({
url: "http://example.com/MessageController",
type: "POST",
data: { action: "send", yourStringName: "something" },
async: false, // make sure you really need it
contentType:'application/x-www-form-urlencoded'
}).done(function(response) {
console.log(response);
});
var url="MessageController"
$.post(url, { action : "send"} ,function(data){
//response from MessageController is in data variable
//code 1
alert(data)
}).error(function(){
alert("error"); //code 2
})