我正在构建一个通过AJAX发送消息的聊天室。每当我使用enter
参数点击data:
时,它都会返回错误,但如果我删除data:
,它就不会执行任何操作。这非常令人费解,我想知道我做错了什么。这就是我所拥有的:
$("#form").bind("keypress", function(e) {
if (e.keyCode == 13) {
$.ajax({
type: 'POST',
url: "send-message.php",
data: "message="+$("#message").val()+"&user="+$("#user").val()+"&room="+$("#room").val(),
success: $("#message").val(""),
error: $("#message").val("FAIL"),
});
return false;
}
});
我在AJAX调用中使用PHP,所以我不知道是否会导致问题?
答案 0 :(得分:2)
试试这个:
...
$.ajax({
type: 'POST',
url: "send-message.php",
data: {message: $("#message").val(), user: $("#user").val(), room: $("#room").val()},
success: function() { $("#message").val(""); },
error: function() { $("#message").val("FAIL"); }
});
...
在上面的代码中:
a)以JSON形式发送的数据 - 这将确保jQuery根据需要正确执行任何url编码和转义
b)成功和错误选项必须是回调函数
答案 1 :(得分:0)
我这样做只是为了检查它是否抓取所有正确的数据:
var data = {
message: $('#message').val(),
user: $('#user').val
};
console.log(data);
答案 2 :(得分:0)
您需要更改这些行:
success: $("#message").val(""),
error: $("#message").val("FAIL"),
到
success: function () { $("#message").val("") },
error: function () { $("#message").val("FAIL") // removed trailing comma
我将处理程序包装在函数中并删除了逗号。
答案 3 :(得分:0)
如果你想在POST中传递数据,你应该使用javascript key:value格式(或JSON格式)。
在
中输入以下内容data: {"message": $("#message").val(),"var2":variable}
答案 4 :(得分:0)
您可以将对象传递给数据,jQuery负责将其转换为您发出的请求类型的正确形式,在本例中为POST:
$("#form").bind("keypress", function(e) {
if (e.keyCode == 13) {
$.ajax({
type: 'POST',
url: "send-message.php",
data: {
message: $("#message").val(),
user: $("#user").val(),
room: $("#room").val()
},
success: function () {
$("#message").val("");
},
error: function () {
$("#message").val("FAIL");
},
});
return false;
}
});
此外,error
和success
是回调,因此如果要调用它,则需要提供函数,而不是字符串。为你修好了。
答案 5 :(得分:0)
和提示
...
data: $("#form").serialize();
...