我显然在做一些愚蠢的事情,我不太明白出了什么问题。 每当我单击"发送"按钮时,单击事件都会失败。
function CreateNewMessage()
{
var receiver = $("#receiver").value;
var msg_body = ("#msg_body").value;
$("#submit").click(function(event) {
alert("it works!");
$.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
});
}
(function() {
$(document).ready(function() {
CreateNewMessage();
});
})();
和 HTML 按钮
<input id="submit" value="Send" type="submit">
谁能发现我的错误?
编辑:
因此,在考虑了每个人的建议后,这是我的代码现在的样子。
function CreateNewMessage()
{
$("#submit").click(function(event) {
var receiver = $("#receiver").val();
var msg_body = $("#msg_body").val();
alert("it works!");
$.post("message/new/", {"receiver" : receiver, "msg_body" : msg_body});
});
}
$(document).ready(function() {
CreateNewMessage();
});
它仍然没有正确发送请求,并且控制台没有记录错误。 我尝试使用提交事件而不是上面代码中的单击事件,但得到了相同的结果。
编辑 2所以代码在 jsFiddle 上工作,但不能在我的浏览器中工作。 我真的很困惑
编辑3:也许这与它有关...请注意,最初加载页面时,提交按钮不存在。它是在特定 JavaScript 事件触发时生成的。
你缺少#msg_body
的$()
函数,它应该是这样的:
var receiver = $("#receiver")[0].value;
var msg_body = $("#msg_body")[0].value;
此外,你不需要将ready
包装在函数中,你可以直接在脚本中调用它;你也可以直接将 CreateNewMessage 函数设置为处理程序,如下所示:
$(document).ready( CreateNewMessage );
jQuery 的值是 .val()。另外,为什么不听提交事件?如果您不希望帖子通过,只需使其返回 false。
你错过了之前的 $("#msg_body"),所以你的脚本会在那里崩溃。
function CreateNewMessage()
{
var receiver = $("#receiver").value;
var msg_body = $("#msg_body").value;
$("#submit").click(function(event) {
alert("it works!");
$.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
});
}
(function() {
$(document).ready(function() {
CreateNewMessage();
});
})();
<</div>
div class="one_answers"> 试试这个:
function CreateNewMessage()
{
var receiver = $("#receiver").value;
var msg_body = $("#msg_body").value;
alert("it works!");
$.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
}
$(function(){
$("#submit").click(function() {
CreateNewMessage();
});
});