TSt*_*Stu 2 php ajax https jquery post
我们最近移动了服务器并注意到一些奇怪的问题。我们注意到的主要问题是在 php 中执行空检查的任何变量都被解释为字符串。
例如
if($var == null){
//do something
}
Run Code Online (Sandbox Code Playgroud)
已做出的两个关键更改是:1. 从 HTTP 服务器更改为 HTTPS 2. 从 php 版本 5.3.14 更改为 5.3.13
请求是使用 jQuery.ajax 后调用发出的。
我的问题是,是否有任何已知的问题/原因会发生这种情况(例如上面的更改),以及是否可以采取任何措施来解决该问题(更改最少)。
一如既往感谢您的回复!
编辑:示例
JS/jQuery
var test = null;
$.ajax({
url: 'functions.php',
data: { action: 'testNullFunction', testVar:test },
type: 'post',
success:
function (output) {
alert(output)
}})
Run Code Online (Sandbox Code Playgroud)
博士:
if (isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch ($action) {
case 'testNullFunction':
if ($_POST['testVar']==null || is_null($_POST['testVar'])){
echo "its null";
}
break;
Run Code Online (Sandbox Code Playgroud)
当你这样做时:
$.ajax({
url: 'functions.php',
data: { action: 'testNullFunction', testVar:test },
type: 'post',
success: function (output) {
alert(output)
}
})
Run Code Online (Sandbox Code Playgroud)
您将 发送data为字符串,因此所有值也成为字符串。
PHP接收到的时候,还是一个字符串。在这种情况下,PHP 不可能确定是否testVar包含null或"null"- 类型信息丢失了。
您可以通过发送来解决这个问题:
data: { action: 'testNullFunction', testVar: JSON.stringify(test) }
Run Code Online (Sandbox Code Playgroud)
并接收:
$testVar = json_decode($_POST['testVar'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |