Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jQuery中调用ajax时,如何访问PHP变量?_Php_Javascript_Jquery - Fatal编程技术网

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

在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

我正在尝试使用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->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)