这个问题与:
Cannot pass null to server using jQuery AJAX. Value received at the server is the string “null”
但是我再次问这个问题,因为在这个问题上的解决方案是非常丑陋的,我认为必须是一个更好的解决方案。
问题
当您使用POST将jQuery Ajax数据发送到PHP时,您将获取字符串“false”(string)而不是false(bool),“true”而不是true(bool)和“null”而不是NULL:
解决方案(在上述问题中提出):
在将数据发送到jQuery之前将数据转换为JSON,然后在PHP中解码该数据。
有代码:
Javascript代码:
$.ajax ( { url : <server_url>,dataType: 'json',type : 'POST',success : receiveAjaxMessage,data : JSON.stringify ( { valueTrue : true,valueFalse: false,valueNull : null } ) } );
var_dump(json_decode(file_get_contents('PHP://input'),true));
对我来说,这不是一个解决方案,只是一个丑陋的黑客。
在我的情况下的问题是,我不能使用file_get_contents(‘PHP:// input’)来访问$ _POST,更重要的是,我不能使用$ _POST,因为我使用HMVC。
而且我知道我可以修复它在PHP中检查那些“false”,“true”和“null”,或者在jQuery中发送一个和0个true和false。
但是我认为这是一个很常见的问题,而且jQuery是一个非常常见的框架,所以我很确定有一个更好,更优雅的方式来发送jQuery中正确类型的数据。