在jQuery中调用ajax时如何访问我的PHP变量?

时间:2010-06-21 06:14:18

标签: php javascript jquery

我正在尝试使用jQuery中的AJAX函数创建一个简单的评论回复论坛上的帖子。代码如下:

$.ajax({type:"POST", url:"./pages/submit.php", data:"comment="+ textarea +"& thread="+ currentId, cache:false, timeout:10000,
        success: function(msg) {
                // Request has been successfully submitted
                alert("Success " + msg);
        },
        error: function(msg) {
                // An error occurred, do something about it
                alert("Failed " + msg);
        },
        complete: function() {
                // We're all done so do any cleaning up - turn off spinner animation etc.
                // alert("Complete");
        }
    });

在submit.php文件中,我有这个简单的if->然后:

    if(System::$LoggedIn == true)
{
    echo "Yes";
} else {
    echo "No";
}

此调用适用于我在网站上使用的所有其他页面,但我无法通过AJAX函数访问任何变量。我已经多次测试了所有内容,我可以回复任何内容,但无论何时我尝试访问其他PHP变量或函数,我都会收到此错误:

  

[对象XMLHttpRequest]

失败

为什么我无法访问其他功能/变量?我必须使用我已经制作的$ mySQL变量将提交的数据提交到submit.php中的数据库中。除非我使用此AJAX函数调用它,否则可以在其他任何地方访问这些函数/变量。经过几个小时的谷歌搜索,我刚刚度过。任何人都可以为我阐明这一点吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

您只拥有返回单个变量的PHP脚本。编写另一个返回JSON的脚本,或者如果您感觉勇敢的XML。下面是使用JSON的快速示例。

在你的javascript中

$.ajax({
    type: 'GET'
    ,url: '../pages/my_vars.php'
    ,dataType: 'json'
    ,success: function(data){
        // or console.log(data) if you have FireBug
        alert(data.foo);
    }
});

然后在php脚本中。

// make an array or stdClass 
$array = array(
    'foo'  => 'I am a php variable'
    ,'bar' => '... So am I'
);

// Encodes the array into JSON
echo json_encode($array);

答案 1 :(得分:0)

首先,URL的数据参数字符串中有空格 - 会导致问题。

其次,您的successerror函数引用变量msg。您似乎期望该变量为字符串。那么,问题就变成了 - submit.php 生成的PHP脚本的输出格式是什么?

快速阅读jQuery API表明,如果响应的格式只是文本,则应使用响应的.responseText属性访问内容。这也与你说你得到的响应内容“Failed [object XMLHttpRequest]”(因为你试图在警报中使用它时将XHR变成字符串。)

试试这个:

$.ajax( {
  type: "POST" ,
  url: "./pages/submit.php" ,
  data: "comment="+ textarea +"&thread="+ currentId ,
  cache: false ,
  timeout: 10000 ,
  success: function( msg ) {
   // Request has been successfully submitted
    alert( "Success " + msg.responseText );
  } ,
  error: function( msg ) {
   // An error occurred, do something about it
    alert( "Failed " + msg.responseText );
  } ,
  complete: function() {
   // We're all done so do any cleaning up - turn off spinner animation etc.
    // alert( "Complete" );
  }
} );