繁体   English   中英

JQuery AJAX - 不发送数据?

[英]JQuery AJAX - Not sending with data?

我正在建立一个通过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,所以我不知道是否会导致问题?

尝试这个:

...
$.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)成功和错误选项必须是回调函数

我这样做只是为了检查它是否抓取所有正确的数据:

    var data = {
        message: $('#message').val(),
        user: $('#user').val
    };

    console.log(data);

您需要更改以下行:

   success: $("#message").val(""),
   error: $("#message").val("FAIL"),

   success: function () { $("#message").val("") },
   error: function () { $("#message").val("FAIL")  // removed trailing comma

我将处理程序包装在一个函数中并删除了尾随的逗号。

如果要在POST中传递数据,则应使用javascript key:value格式(或JSON格式)。

输入以下内容

data: {"message": $("#message").val(),"var2":variable}

您可以将对象传递给数据,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;
    }
});

此外, errorsuccess是回调,因此您需要提供一个函数,而不是字符串,如果您想要它调用。 为你修好了。

和一个提示

...
data: $("#form").serialize();
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM