【问题标题】:Boolean value not being passed with jQuery/ $.get - Why?没有通过 jQuery/$.get 传递布尔值 - 为什么?
【发布时间】:2010-08-06 21:57:44
【问题描述】:

我的前端脚本包含以下 jQuery 代码:

$.get("/backend/post.php", { 
            title: title,
            message: post,
            stick: sticky
        }, function (output) {
            alert("Call Back");
            }
        }, "json");

stick 是一个布尔值,另外两个是字符串。我已经确认它们实际上已经设置好了。现在在后端页面上,使用 $_GET、title 和 message 并被传递,但 $_GET['stick'] 返回空,PHP 函数 gettype() 告诉我它是 NULL。

请求其中一位 cmets:

sticky 来自一个表单,它是一个复选框,我只是用这个代码选中它:

var sticky = $("input[name=sticky]").attr('checked');

当我使用 alert() 输出粘性的值时,它会根据选择的内容返回真/假。

为什么这个布尔值没有被传递? JSON 站点告诉我你可以在其中包含布尔值 true/false。但由于某种原因,它在这里不起作用。

【问题讨论】:

  • 你需要发布sticky来自哪里:)
  • 布尔值 false 很可能在此处转换为 null
  • @Pekka - 不为空。甚至没有传回服务器。

标签: javascript jquery json boolean


【解决方案1】:

我不能完全确定,因为我自己没有测试过,但我认为这与 GET 请求如何作为字符串传输有关。试试这样的:

var sticky = $("input[name=sticky]").attr('checked')?"true":"false";

$.get("/backend/post.php", { 
    title: title,
    message: post,
    stick: sticky
}, function (output) {
        alert("Call Back");
    }
}, "json");

这完全有可能行不通,但请尝试一下。

【讨论】:

    【解决方案2】:

    如果表单中的输入没有值,则不会将其作为参数发送。所以$_GET['stick'] 的缺失相当于查询字符串参数stick=false。所以如果你必须有一个参数:

    var sticky = 'true';
    
    if($("input[name=sticky]").not(':checked')) {
        sticky = 'false';
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 2014-05-28
      • 2017-08-19
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 2023-04-09
      相关资源
      最近更新 更多