Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Null以字符串形式发送";空";_Php_Jquery_Ajax_Post_Https - Fatal编程技术网

Php Null以字符串形式发送";空";

Php Null以字符串形式发送";空";,php,jquery,ajax,post,https,Php,Jquery,Ajax,Post,Https,我们最近移动了服务器,并注意到一些奇怪的问题。 我们注意到的主要问题是,在php中执行空检查的任何变量都被解释为字符串 e、 g 已做出的两项关键更改是: 1.从HTTP服务器更改为HTTPS 2.从php版本5.3.14更改为5.3.13 这些请求是使用jQuery.ajax post调用发出的 我的问题是,是否存在任何已知的问题/原因(如上面的更改)以及是否可以采取任何措施来解决问题(以最小的更改) 一如既往地感谢您的回复 编辑: 范例 Js/jQuery var test = nu

我们最近移动了服务器,并注意到一些奇怪的问题。 我们注意到的主要问题是,在php中执行空检查的任何变量都被解释为字符串

e、 g

已做出的两项关键更改是: 1.从HTTP服务器更改为HTTPS 2.从php版本5.3.14更改为5.3.13

这些请求是使用jQuery.ajax post调用发出的

我的问题是,是否存在任何已知的问题/原因(如上面的更改)以及是否可以采取任何措施来解决问题(以最小的更改)

一如既往地感谢您的回复

编辑: 范例

Js/jQuery

    var test = null;
    $.ajax({
        url: 'functions.php',
        data: { action: 'testNullFunction', testVar:test },
        type: 'post',
        success:
        function (output) {
            alert(output)
        }})
Php:


有点天真,但是试着做严格的类型检查

if($var === null){
    //do something
}
或者,use可能改为_null

if (is_null($var)){
    //do something
}
当您这样做时:

$.ajax({
    url: 'functions.php',
    data: { action: 'testNullFunction', testVar:test },
    type: 'post',
    success: function (output) {
        alert(output)
    }
})
您将
数据作为字符串发送,因此所有值也将成为字符串

当PHP收到它时,它仍然是一个字符串。在这种情况下,PHP无法确定
testVar
是否包含
null
“null”
——类型信息丢失


您可以通过发送:

data: { action: 'testNullFunction', testVar: JSON.stringify(test) }
并收到:

$testVar = json_decode($_POST['testVar'])

如果您没有按照JSON的行对数据进行编码,您的字段将作为字符串发送-这包括作为
'null'
发送的
null
,当然,如果您根据
If($myVar==null)
$myVar
包含
'null'
之类的内容进行计算,则它不是真正的null


您可能还想提问。

您能举个例子,说明在对
null
进行测试之前如何设置
$var
?如果它是来自Ajax调用的请求参数,那么JS/jQuery中的参数设置如何?在@nnnnnn
“null”==null
上面添加了一个例子,用于某些版本的PHP?谢谢@Eric。看来前面还有一个漫长的夜晚:\n谢谢你的解决方案。顺便说一句,JavaScript中JSON编码的函数是
JSON.stringify
data: { action: 'testNullFunction', testVar: JSON.stringify(test) }
$testVar = json_decode($_POST['testVar'])