我正在尝试使用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函数调用它,否则可以在其他任何地方访问这些函数/变量。经过几个小时的谷歌搜索,我刚刚度过。任何人都可以为我阐明这一点吗?非常感谢。
答案 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的数据参数字符串中有空格 - 会导致问题。
其次,您的success
和error
函数引用变量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" );
}
} );