jquery ajax似乎不工作
这是我的HTML。只是一个简单的形式:jquery ajax似乎不工作
<form>
Username:
<input type="text" id="username"/>
<br/>
Password:
<input type="password" id="password"/>
<br/>
<input type="submit" id="submit" value="submit"/>
</form>
下面是与之相关的我的JS:
function init(){
$("#submit").click(function() {
var url = "http:example.com/mail";
alert("what?");
$.ajax(url, {
type : 'post',
data : {
'username' : $("#username").val(),
'password' : $("#password").val()
},
success : function() {
alert("done");
}
});
});
}
我点击提交按钮后,$.ajax
功能应该做一篇文章到的网址,让我保持我的服务器运行。
但是,从我的服务器端日志或萤火虫网络监控,我没有看到POST方法的任何迹象。 (第一alert
被触发,但第二次是没有。)
他们是我开发了两个不同的应用程序,所以我做了一些研究之后,这里是一个解释:
由于
$.ajax()
使用XMLHttpRequest
,它受XHR的跨域限制。您的SiteA和SiteB位于不同的主机/端口上吗?如果是这样,你会看到预期的行为。
是这样吗?如果是这样,是否有任何解决方法?
您需要return false;
在点击处理程序的末尾以防止默认提交表单。虽然一旦您阻止提交表单,您仍然会遇到跨域限制,这并不是一件容易解决的问题。查看jsonp寻找可能的解决方案。
Thanx,现在我记得我有过类似的情况。所以这是限制不是吗? ** Origin chrome-extension:// dblkghnlgboodeflkimkclllhcgikcam不被Access-Control-Allow-Origin所允许** – 2012-02-07 01:17:18
事件处理程序改成这样......
function init(){
$("#submit").click(function(event) {
event.preventDefault();
var url = "http:example.com/mail";
alert("what?");
$.ajax(url, {
type : 'post',
data : {
'username' : $("#username").val(),
'password' : $("#password").val()
},
success : function() {
alert("done");
}
});
});
}
这将从实际做一个完整的POST到服务器停止形式。
我做过了,但仍有一个限制,阻止我发布它。 Thankx无论如何 – 2012-02-07 01:20:01
Gotcha ...那个dern跨浏览器的东西:) – jcreamer898 2012-02-07 01:20:37
我认为这会工作
function init(){
$( “#提交”)点击(函数(事件){
event.preventDefault();
var url = "http:example.com/mail";
alert("what?");
$.ajax(url, {
type : 'post',
data : {
'username' : $("#username").val(),
'password' : $("#password").val()
},
cache: 'false',
async: 'false',
success : function() {
alert("done");
}
});
})。 }
有没有什么理由说你在用Ajax做这件事?正常表单提交工作吗?如果是这样,你就不必担心跨域限制。 – Douglas 2012-02-07 01:14:20
http://api.jquery.com/submit/ - 我会建议绑定你的函数到表单的提交,而不是按钮的点击;这样,您可以在输入密码后按回车键。 – whichdan 2012-02-07 01:14:23
小心张贴密码在明文.. – Lloyd 2012-02-07 01:43:26