无法在Ajax应用程序中执行任何PHP操作

时间:2010-10-07 14:41:10

标签: php javascript ajax get

我的Ajax应用程序运行正常,直到我在PHP脚本中实现了if语句...然后就像传染病一样,如果我对PHP中的数据执行任何操作,它就不会返回到Javascript层。< / p>

我能做的就是回复数据......

例如,我发送给PHP的查询字符串读取...

index.back3.php?form=login&json={"email":"mo@maurice-campobasso.com","password":"asdasdfas"}

我知道它到达那里是因为在我创建的最简单的调试PHP文件(index.back3.php)中我只有一个简单的echo语句......它永远不会将数据发送回Javascript文件

当index.back3.php读取

<?php echo $_GET[json]; ?>

我在javascript中触发的警报可靠地吐出json字符串。

当它读取

<?php echo $_GET[form]; ?>

当我得到更复杂的东西时,没有任何东西回到javascript。即使是简单的串联......

<?php echo ($_GET[form] . $_GET[json]); ?>

...什么都不返回!

一个简单的if ... else语句也不会返回任何内容。

<?php

    if(!isset($_GET[form]) { 
     echo "no!";
    } else {
     echo "yes!";
    }

?>

这个重要的行动也......

<?php

 $array = json_decode($GET[json], true);

 var_dump($array);
?>

什么都不返回。

好的......所以只是为了确保所有内容都在这里,这是我在Javascript层中的Ajax输出功能。

function responseAjax() {

 if (myRequest.readyState == 4)  {

  if(myRequest.status == 200) {  

   var foo = myRequest.responseText;

   alert(foo);

  } else {

   alert("An error has occured:  " + myRequest.statusText);
  }
 }
}

有人可以解释一下发生了什么吗?我真的很难过。

3 个答案:

答案 0 :(得分:0)

$ _ GET ['form']是正确的方式。

并使用表单作为变量名称并不是很好。

使用任何其他变量并传递$ _GET ['formname']。

尝试直接通过url访问php页面并传递参数,先检查php

返回错误或其工作推进。

您可以用简单的方式使用PHP,jquery和ajax。

尝试在jquery中找到.post或.get方法

http://api.jquery.com/jQuery.post/

$ .post('ajax / test.html',function(data){   $( '结果')HTML(数据)。 });

答案 1 :(得分:0)

  

if(!isset($_GET[form]) { 
 echo "no!";
} else {
 echo "yes!";
}
     

&GT;

你在if语句中缺少右括号。并且如前所述,在数组键周围加上引号。

在开发过程中,您还应该将error_reporting打开到E_ALL。它有助于找出可能出现的小错误。

答案 2 :(得分:0)

我设法解决了它,它与我在这篇文章中省略的一行代码有关,因为我认为它是简化的。该功能的完整版本是这样的。

function responseAjax() {

    if (myRequest.readyState == 4)  {       

        if(myRequest.status == 200) {       

            var foo         =   myRequest.responseText;     

            var cookieData      =   eval("(" + foo + ")");  //this was the problem!!

            alert(foo);             

            document.cookie = 'email ='     + cookieData.email      + '; path=/';
            document.cookie = 'firstname =' + cookieData.FirstName  + '; path=/';

        } else {

            alert("An error has occured:  " + myRequest.statusText);
        }
    }
}

这是'var cookieData'行......虽然我不确定原因。