我正在转换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 }
Tgr.. 12
你会期待什么?您将此值作为POST参数发送,这些参数是简单的文本字符串.如果您想要类型安全传输,请使用某种编码,例如JSON.(这不是什么dataType
- 它指的是来自服务器的响应.)
你会期待什么?您将此值作为POST参数发送,这些参数是简单的文本字符串.如果您想要类型安全传输,请使用某种编码,例如JSON.(这不是什么dataType
- 它指的是来自服务器的响应.)
您可以使用undefined而不是null.
data: { valueTrue : true, valueFalse: false, valueNull : undefined }