我在使用jQuery时遇到AJAX结果问题。
我已经定义了这些功能:
<script>
function hello(callback, funct, val) {
var ret = 0;
console.log(val);
$.ajax({
type: 'GET',
dataType: 'json',
url: 'SGWEB/header.php',
data: {
'funct': funct,
'val': val
}
}).done(function (data) {
// you may safely use results here
console.log(data);
callback(data);
});
};
function change() {
hello(function (ret) {
console.log(ret);
$("#b1").text(ret);
}, "hello", 1);
};
change();
</script>
SGWEB / header.php文件:
extract($_GET);
$validFunctions = array("readPin","hello");
if(in_array($funct, $validFunctions)) $funct();
// functions
// ....
function hello($val) {
if ($val == 1) {
echo "1";
} else
echo "2";
}
我遇到的问题是AJAX只传递数据{'funct': funct}
中的第一个参数并且它正常工作,但val
完全被忽略(它总是回显“2”)。
我该如何解决这个问题?感谢
答案 0 :(得分:3)
您忘记将$val
参数传递给PHP中的函数
改变这个:
if (in_array($funct, $validFunctions)) $funct();
到此:
if (in_array($funct, $validFunctions)) $funct($val);
另一个问题是你的AJAX正在期待JSON,因为你在这里dataType:'json'
定义了它,但是你没有发送它。我会像这样重做你的ajax调用,这样你也可以看到其他错误:
$.ajax({
type: 'GET',
url: 'SGWEB/header.php',
data: {
'funct': funct,
'val': val
},
success: function (result) {
console.log(result);
callback(result);
},
error: function (xhr, textStatus, error) {
console.log(xhr);
console.log(textStatus);
console.log(error);
}
});