【问题标题】:Jquery Ajax Call throws undefined errorJquery Ajax 调用抛出未定义的错误
【发布时间】:2016-05-21 09:19:50
【问题描述】:

我正在尝试使用 Jquery Ajax 调用将两个变量发送到 php。如果 async 设置为 false,则调用有效,但如果为 true,则调用失败。当使用表单仅输入一个变量时,该代码也可以工作(基本上得到输入丢失的响应),但是,当两个输入都给出时,代码返回一个未定义的错误。请给我一些建议。打了好久。

后期编辑 - 我合并了建议的更改。修改后的代码不起作用

这是我现在拥有的 Jquery 代码 -

$( document ).ready(function() {
$("#callLogin").click(function(){
    var username = $("#username").val();
    var password = +$("#login_password").val();
    $.ajax({
        url: "login.php",
        type: "POST",
        async: true,
                data: 'username=' +username + '&login_password='+password,   

        success: function(response){
            if(response!=""){
                alert(response);
                $("#loginErrMsg").html(response);
                $("#myModal").css("display","block");   
            }},
        error : function (ts) {
                    alert(ts.responseStatus);
        }
    });
});
});

还有一个观察:我也尝试过序列化表单数据,然后将其发送到 PHP。它似乎仍然唯一可行的方法是当我更改 async: false 时。任何帮助将不胜感激

【问题讨论】:

  • 你的html在哪里?
  • 您的脚本看起来很完美。请提供html

标签: php jquery ajax


【解决方案1】:

如果你想给 html 赋值,你必须把它放在括号中。

$("#loginErrMsg").html(response);

【讨论】:

  • 感谢您指出错误。但这个问题的原因似乎是别的东西
  • 顺便说一句,您可以将对象传递给“数据”,它应该可以正常工作。为什么将密码更改为整数?如果您在变量前加上“+”,它会将您的变量更改为整数。为什么需要将密码更改为整数?
  • 它也不起作用 - data: { 'username': username, 'login_password': password },
  • 如果您将字符串传递给“login_password”,您将获得 NaN。您确定所有 id 的名称都正确吗?
【解决方案2】:

当你想在 ajax 调用中传递多个数据时,你可以像我在下面的代码中显示的那样传递。

$( document ).ready(function() {
$("#callLogin").click(function(){
var username = $("#username").val();
var password = +$("#login_password").val();
    $.ajax({
        url: "login.php",
        type: "POST",
        async: true,
        data: 'username=' +username + '&login_password='+password,   


        success: function(response){
            if(response!=""){
                alert(response);
                $("#loginErrMsg").html(response);
                $("#myModal").css("display","block");   
            }},
        error : function (ts) {
                    alert(ts.responseStatus);
        }
    });
});
});

试试这个可能你的问题会解决。

【讨论】:

  • 谢谢它的工作。但是你能告诉我我的代码有什么问题吗?特别是考虑到它在 async 设置为 false 时有效。
  • 令人毛骨悚然。您的建议是有效的,但是当我在下面合并 Mirr 建议的更改时(这对我来说是一个明显的错误),它再次停止工作并给出相同的错误。我在下面再次提供格式化代码。
【解决方案3】:

通过参考此处发布的类似问题解决了该问题。基本上需要设置 $("#callLogin").click(function(e){e.preventDefault(); .... }。表单中的提交函数被调用了两次,这造成了问题。谢谢无论如何,所有的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2022-07-01
    相关资源
    最近更新 更多