在jQuery中调用ajax时,如何访问PHP变量?
我正在尝试使用jQuery中的AJAX功能为论坛上的帖子创建一个简单的评论回复。代码如下:在jQuery中调用ajax时,如何访问PHP变量?,php,javascript,jquery,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 succe
$.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->then:
if(System::$LoggedIn == true)
{
echo "Yes";
} else {
echo "No";
}
此调用适用于我在站点上使用的所有其他页面,但我无法通过AJAX函数访问任何变量。我已经不止一次地测试了所有内容,我可以回显任何内容,但每当我尝试访问其他PHP变量或函数时,我都会遇到以下错误:
失败[对象XMLHttpRequest]
为什么我无法访问其他函数/变量?例如,我必须使用已经生成的$mySQL变量将发送到submit.php中的数据提交到数据库中。同样,这些函数/变量可以在任何其他地方访问,除非我使用这个AJAX函数调用它。在谷歌搜索了几个小时后,我已经精疲力竭了。有人能帮我解释一下吗?非常感谢。首先,您在URL的数据参数字符串中有一个空格-这将导致问题 其次,您的
success
和error
函数正在引用变量msg
。您似乎希望该变量是字符串。那么,问题就变成了——您的PHP脚本在submit.PHP上生成的输出格式是什么
快速阅读jQueryAPI表明,如果响应的格式只是文本,那么应该使用响应的.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" );
}
} );
首先,在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" );
}
} );
您拥有的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);
您拥有的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);
如果您希望我们帮助您解决此问题,您必须提供更多详细信息。如果您无法更好地描述系统,请尝试向我们提供整个源代码?系统只是一个处理用户数据的类。这可能是一个不好的示例。我有一个配置文件,其中包含一个变量,例如:$variable=“test”;我甚至无法在submit.php中访问该变量,该变量在整个项目中都是全局变量。submit.php似乎有自己的作用域。您应该绕过AJAX,通过在浏览器中键入URL直接请求页面。然后,您可以在您和问题之间少一层调试问题。是否包含配置文件在你的submit.php中?你能提供这个脚本的更多细节吗?我对你的“submit.php似乎有一个自己的作用域”语句感到有点困惑-除非它包含另一个包含$variable赋值的文件,否则它将是未初始化的(可能是register_globals,但让我们忘记这一点)。如果您希望它在页面视图之间对用户是持久的,则需要使用会话变量(vie$\u session)如果您希望我们帮助您解决此问题,您必须提供更多详细信息。如果您无法更好地描述系统,请尝试向我们提供整个源代码?系统只是一个处理用户数据的类。这可能是一个不好的示例。我有一个配置文件,其中包含一个变量,例如:$variable=“test”;我甚至无法在submit.php中访问该变量,该变量在整个项目中都是全局变量。submit.php似乎有自己的作用域。您应该绕过AJAX,通过在浏览器中键入URL直接请求页面。然后,您可以在您和问题之间少一层调试问题。是否包含配置文件在你的submit.php中?你能提供这个脚本的更多细节吗?我对你的“submit.php似乎有一个自己的作用域”语句感到有点困惑-除非它包含另一个包含$variable赋值的文件,否则它将是未初始化的(可能是register_globals,但让我们忘记这一点)。如果您希望它在页面视图之间对用户是持久的,则需要使用会话变量(vie$\u session)