我正在转换javascript/php/ajax应用程序以使用jQuery来确保与Firefox以外的浏览器兼容.
我使用jQuery的ajax函数传递true,false和null值时遇到问题.
Javascript代码:
$.ajax
(
{
url : ,
dataType: 'json',
type : 'POST',
success : receiveAjaxMessage,
data:
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
}
);
PHP代码:
var_dump($_POST);
服务器输出:
array(3) {
["valueTrue"]=>
string(4) "true"
["valueFalse"]=>
string(5) "false"
["valueNull"]=>
string(4) "null"
}
问题是null,true和false值正在转换为字符串.
当前使用的Javascript AJAX代码正确传递null,true和false,但仅适用于Firefox.
有谁知道如何使用jQuery解决这个问题?
下面是一些工作代码(不使用jQuery)与上面给出的不工作代码进行比较.
Javascript代码:
ajaxPort.send
(
,
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
);
PHP代码:
var_dump(json_decode(file_get_contents('php://input'), true));
服务器输出:
array(3) {
["valueTrue"]=>
bool(true)
["valueFalse"]=>
bool(false)
["valueNull"]=>
NULL
}
请注意,正确接收null,true和false值.
另请注意,在第二种方法中,$ _POST数组未在PHP代码中使用.我认为这是问题的关键,但我找不到使用jQuery复制此行为的方法.
在接受以下答案后添加了此部分.
这是原始代码的更正版本.
Javascript代码:
$.ajax
(
{
url : ,
dataType: 'json',
type : 'POST',
success : receiveAjaxMessage,
data : JSON.stringify
(
{
valueTrue : true,
valueFalse: false,
valueNull : null
}
)
}
);
PHP代码:
var_dump(json_decode(file_get_contents('php://input'), true));
服务器输出:
array(3) {
["valueTrue"]=>
bool(true)
["valueFalse"]=>
bool(false)
["valueNull"]=>
NULL
}