【问题标题】:Jquery Ajax post, returns what type of data?Jquery Ajax post,返回什么类型的数据?
【发布时间】:2013-07-24 18:01:32
【问题描述】:

我发送了一个 ajax 请求,它返回单词“false”或“用户名”。我让这个工作正常。成功时,它将单词“false”或“用户名”放入 .body 类 div。我遇到的问题是我想检查是否存在“假”或不存在“假”。这样我的密码字段可以禁用或取消禁用。事情是一切正常并经过测试。我的问题是,当我检查“假”时,它认为它作为 NULL 存在。无论 ajax 发出什么,它都是一种外来数据类型,虽然它可以在 html 中显示,但我似乎可以将它存储在一个变量中并检查“false”是否存在。

$(function () {

    $(".Guide_Welcome_Container").hide();
    $("#inputPassword").attr("disabled", "disabled");


    $("button").click(function () {
        $(".Guide_Welcome_Container").fadeToggle(1000);
        $(".HeaderLogin").fadeToggle(1000);
    });

    $("#inputEmail").keyup(function () {
        var UsernameInput = $(this).val();
        $.ajax({
            type: "POST",
            url: "PullUserDb.php",
            data: {
                'UsernameInput': UsernameInput
            },
            dataType: "html",
            success: function (data) {
                $('#BodyID').html(data);
                var GoodUsername = $("#BodyID").html();

                if (GoodUsername != "false") {
                    $("#inputPassword").attr("disabled", "disabled");
                } else {
                    $("#inputPassword").removeAttr("disabled");
                }
                //
            }

        });

    });

});

【问题讨论】:

    标签: jquery ajax types return


    【解决方案1】:

    $("#BodyID").html() //might contain some html too

    试试
    console.log($("#BodyID").html());
    在您的成功回调中查看它返回的内容

    【讨论】:

    • 我添加了 console.log($("#BodyID").html());什么也没发生。它应该是警报吗?
    • 不,您需要使用浏览器开发工具来检查页面。您可以右键单击页面并单击检查元素,然后单击控制台选项卡
    • 谢谢。它返回单词 false 或用户名。它正在返回单词,但 If else 语句仍然无效。
    • @james 您也可以尝试alert(typeof GoodUsername) 来检查您的数据是否为字符串,如果是,请确保它是小写的...
    • 我使用您的 console.log 技巧发现了问题。问题是,它在“假”或“用户名”的输出之前返回了一堆空白。我将不得不考虑如何解决它。不过谢谢。 (这也不是时间问题,我也试过了。)
    【解决方案2】:

    在你的代码中

    dataType: "html"
    

    尝试 json 而不是 html :) 我使用这个结构

    {success:true,message:'OK'}
    

    【讨论】:

    • 这是我书中的最佳实践。
    • 我把它做成了 json。还是没有运气。
    • 你如何使用它?测试响应数据,必须是Json语法,所以javascript可以解析成Json对象
    • 当我使用 json 时,它现在只会返回 false 或什么都不返回。我没有返回用户名。它被 json 数据类型破坏了。
    • 我认为需要暂停一下。数据在经过真假时始终为空。
    【解决方案3】:

    把它放在你的成功函数中(我假设你返回的是字符串'false',而不是布尔值,但如果我错了,把'false'换成false):

    if (data !== 'false') {
        // 1. put username on the page, like you do in the above code
        // 2. enable password field
    } else {
        // disable password field
    }
    

    不需要放在页面上,然后检查你放在页面上的内容。 data 对象中的用户名已经返回给您。

    【讨论】:

    • 没有工作它仍然看到是 NULL。如果我这样做 (data !== 'false' && data != NULL) 那么它将保持禁用状态。你认为 if 语句运行得很快,在 ajax 有时间填充数据之前?
    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 2016-01-21
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多