jQuery HTTP Post停止工作,仅在输入长字符串时有效

时间:2016-07-30 02:18:22

标签: javascript jquery html http post

快速背景:非常适合网络开发。我有一个带有用户可填写表单的引导页面。有四个字段(两个文本框,一个广播,一个下拉列表)。我的想法是使用输入数据形成一个JSON并将其发送到我的HTTP服务器,但它似乎不再起作用了。

非常奇怪,我的代码几个小时前完美运行(已经使用requestb.in进行了测试)。 现在突然它(1)只发送POST,如果我有apiname和apiurl变量的长值,并且(2)不再看到我从收音机复选框(env1 - env3)中选择的内容,并且相反,我一直认为我选择了开发,'无论实际选择什么。 我假设我的问题是由我的代码中的jQuery而不是HTML引起的,所以我在这里附上了:

canvas.width*=2

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

第一个问题:为什么总是“开发”?

问题在于您使用赋值的if语句,而不是布尔比较。您需要使用==来比较两个值的相等性。相反,您设置env1.checked = true,其评估结果为true,因此env始终设置为"Dev"

if (env1.checked == true) {
     var env = "Dev";
} else if (env2.checked == true) {
     var env = "Stage";
} else if (env3.checked == true) {
     var env = "Prod";
}

甚至

var env;
if (env1.checked) {
     env = "Dev";
} else if (env2.checked) {
     env = "Stage";
} else if (env3.checked) {
     env = "Prod";
}

第二个问题:为什么不发布?

您应该尝试简化一下代码:

$(document).ready(function(){
    var env1 = document.getElementById("seldevid");
    var env2 = document.getElementById("selstageid");
    var env3 = document.getElementById("selprodid");

    $("button").click(function(){
        var env = "Dev";
        if (env2.checked) {
            env = "Stage";
        } else if (env3.checked) {
            env = "Prod";
        }

        $.post("http://requestb.in/107fmof1",
            {
                apiName:     $("#apinameid").val(),
                apiURL:      $("#apiurlid").val(),
                environment: env,
                action:      $("#actionid").val()
            },
            function(data,status){
                alert("Data: " + data + "\nStatus: " + status);
            }
        );
    });
});

然后使用浏览器Developer Tools查看究竟正在POST的内容,如果有的话。