我不确定我在这里做错了什么。我一直在研究这个问题。我已经基本上看了谷歌和这个页面上的所有内容,仍然没有理解我的第一页应该是什么样子,以使这个工作。
<script>
//firstpage.php
function fetch(){
$.ajax({
url: 'secondpage.php',
type: 'POST',
data: {
id:'ok'
},
success: function(data){
//var data = jQuery.parseJSON(data);
if (data.phpvar == 'ok'){
alert('Success!');// for testing
}else{
alert('Failure!');// for testing
}
}
});
}
</script>
ajax请求第二页:
<?php
//secondpage.php
if($_POST['id'] == 'ok'){
$return_data['phpvar'] = 'ok';
return json_encode($return_data);
}
?>
我做错了什么???我是ajax的新手,所以请以最好的方式解释。我的目标很简单,就是从第二页获取值为“ok”的PHP变量并将其作为一种确认类型传递回第一页,以找出输入了哪个PHP if()条件 - &gt;(取决于sql数据库的响应)。
答案 0 :(得分:1)
您需要摆脱var obj = jQuery.parseJSON(data);
并直接使用data
。 jQuery通常会检测JSON并自动解析它。尽管如此,将dataType: 'json'
添加到您的ajax参数中。
除此之外,您应该将PHP脚本更改为始终返回一些 JSON - 如果它只是一个空对象。
答案 1 :(得分:1)
没关系! 我现在使用ajax的经验是,我不需要在任何时候获取PHP变量。因为如果需要检查某些东西是否存在,那么我们要么在第1页或第2页使用SESSION检查或COOKIE检查。否则我们使用jquery数据发送它:
<script>
//firstpage.php
$.ajax({
type:'POST',
url:'secondpage.php',
data:'id=ok&do=check',
success:function(data){
if(data=='good'){
//do stuff
}
if(data=='bad'){
//do stuff
}
}});
</script>
请求页面:
if($_POST['id'] == 'ok' AND $_POST['do'] != ''){//something was sent, do..
echo 'good';
}else
if($_POST['id'] == 'ok' AND $_POST['do'] == ''){//if nothing was sent, do..
echo 'bad';
}else{/*do nothing*/}
?>
最后如果绝对必要,我们总是可以尝试找到一种在JS文件中运行PHP的方法,并尝试使用PHP函数分割数据,然后将分割数据作为ARRAY返回,然后我们就可以了在我们的代码中使用$ data [1]或$ data [2] ...等数组部分来使用jQuery中完全相同的数据字符串执行不同的任务。