我有以下函数作用于AJAX查询:
var formData = $(this).serialize(); //put the form names and values into an array called formdata
$.get('filtertest.php',formData,processData); //jquery ajax call
function processData(data){
if(data =="a"){
$('#content').html("<h2>You have not selected any 'types of dwelling'. Please select at least one.</h2>");
$('#linky').hide();
}
else if(data=="b"){
$('#content').html("<h2>You have not selected any 'style of dwelling'. Please select at least one.</h2>");
$('#linky').hide();
}
else if(data=="c"){
$('#content').html("<h2>You have not selected any 'situation of dwelling'. Please select at least one.</h2>");
$('#linky').hide();
}
else if(data==1){
$('#content').html('<h2>There is ' + data + ' property available!</h2>');
$('#linky').show();
}
else if(data==0){
$('#content').html('<h2>There are no properties available, please expand your search options.</h2>');
$('#linky').hide();
}
else{
$('#content').html('<h2>There are ' + data + ' properties available!</h2>');
$('#linky').show();
}
}//end processData
在filtertest.php文件中,以下代码用于检查是否未输入任何字段值,如果是,则返回字母a:
//if none of the TODs are selected, returns an error
if ($_GET[tod_house]==0 && $_GET[tod_bung]==0 && $_GET[tod_flat]==0 && $_GET[tod_barnc]==0 && $_GET[tod_farm]==0 && $_GET[tod_small]==0 && $_GET[tod_build]==0 && $_GET[tod_devland]==0 && $_GET[tod_farmland]==0 ){
echo "a";
return;
}
然而,在最初的ajax函数processData
中,开始if(data =="a"){
的行不会捕获回显的值 - 它一直向下到最终的else
函数。奇怪的是,在最后的else
函数中,字母'a'被输入到html中,这意味着echo是正确的,filtertest.php文件立即返回 - 它只是没有被{{1}捕获函数测试字母'a'。
这里肯定会有一些语法错误,但是我一直在看它尝试不同的事情的最后一小时,我无法解决它,它开始真的让我烦恼!!
更改下面指出的瑕疵错误后,它仍然无法正常工作。我试着回应一个不同的数字而不是一个字母。我将if
和processData
中的'a'更改为'-1'并嘿PRESTO!有用。因此,包含'a'的字符串出错 - 我是否在javascript函数中对两个字符串进行了比较错误?
答案 0 :(得分:2)
问题是你如何尝试访问$_GET
数组中的数据:键应该是字符串,即
$_GET['tod_house']
不
$_GET[tod_house]
来自Marc B' comment的更高精度:输出不仅仅是a
,因此不会被选中。