Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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
从AJAX表单输入检索PHP变量_Php_Ajax_Json - Fatal编程技术网

从AJAX表单输入检索PHP变量

从AJAX表单输入检索PHP变量,php,ajax,json,Php,Ajax,Json,我在PHP中有一个表单,它将变量发送到一个PHP文件,该文件会适时地将它们插入MySQL表中 我目前有一个div显示来自PHP的响应(这是PHP打印的任何内容) 一切正常。问题是我想使用在PHP MySQL插入过程中创建/更新的变量。也就是说,不仅要显示PHP文件中打印的内容,还要使用这些变量 我已经看到JSON编码的复杂使用可能会跨越这一界限,但我想知道这是否是最简单的方法。如果有人在这个主题上有任何好的链接或示例。我假设您希望能够通过AJAX将多条数据发送回您的页面并对其进行操作 JSON确

我在PHP中有一个表单,它将变量发送到一个PHP文件,该文件会适时地将它们插入MySQL表中

我目前有一个div显示来自PHP的响应(这是PHP打印的任何内容)

一切正常。问题是我想使用在PHP MySQL插入过程中创建/更新的变量。也就是说,不仅要显示PHP文件中打印的内容,还要使用这些变量


我已经看到JSON编码的复杂使用可能会跨越这一界限,但我想知道这是否是最简单的方法。如果有人在这个主题上有任何好的链接或示例。

我假设您希望能够通过AJAX将多条数据发送回您的页面并对其进行操作

JSON确实是实现这一点的最简单方法。如果您使用PHP5,那么可以从PHP端使用json_encode()将复杂的数据类型(例如对象或数组)发送回浏览器页面。然后在javascript中,对返回的数据(例如:var data=eval(response);)使用eval()将其解析回javascript中可用的复杂类型


有大量的教程将向您展示如何做到这一点,并对其进行比这里的回答更详细的解释。

我假设您希望能够通过AJAX将多个数据发送回页面并对其进行操作

JSON确实是实现这一点的最简单方法。如果您使用PHP5,那么可以从PHP端使用json_encode()将复杂的数据类型(例如对象或数组)发送回浏览器页面。然后在javascript中,对返回的数据(例如:var data=eval(response);)使用eval()将其解析回javascript中可用的复杂类型

有大量的教程将向您展示如何做到这一点,并对其进行比这里的回答更详细的解释。

使用并像这样做:

有一些像这样的PHP

 $jsonHeader = array();  

 if($_REQUEST['param1'])  
 {  
   echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';  
   $jsonHeader['status'] = 'Success';  
 }else  
 {  
   $jsonHeader['status'] = 'Failed because the request was invalid';  
 }  

 if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)  
 {  
   header('X-JSON: (' . json_encode($jsonHeader) . ')');  
 } 
new Ajax.Request('dostuff.php', {  
   method:  'get',  
   parameters:  {'param1':  'this is param 1'},  
   onSuccess:  function(response, jsonHeader){  
    if(jsonHeader['status'] == 'Success'){  
      //Everything is OK, do stuff  
    }else{  
      alert(jsonHeader['status']);  
    }  
   },   
   onFailure:  function(){  
     alert('Fail!');  
   }  
}); 
Prototype获取PHP返回的X-JSON头,并自动将onSuccess函数的jsonHeader参数设置为最初在PHP中设置的值的Javascript数组


只要返回到Javascript的数据量符合HTTP头中的数据量,上述场景就很好

如果需要传回大量数据,只需让PHP输出JSON编码的结果,而不是将其作为标题的一部分。然后,您可以在Ajax调用中使用响应对象的evalJSON()方法。

使用如下方法:

有一些像这样的PHP

 $jsonHeader = array();  

 if($_REQUEST['param1'])  
 {  
   echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';  
   $jsonHeader['status'] = 'Success';  
 }else  
 {  
   $jsonHeader['status'] = 'Failed because the request was invalid';  
 }  

 if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)  
 {  
   header('X-JSON: (' . json_encode($jsonHeader) . ')');  
 } 
new Ajax.Request('dostuff.php', {  
   method:  'get',  
   parameters:  {'param1':  'this is param 1'},  
   onSuccess:  function(response, jsonHeader){  
    if(jsonHeader['status'] == 'Success'){  
      //Everything is OK, do stuff  
    }else{  
      alert(jsonHeader['status']);  
    }  
   },   
   onFailure:  function(){  
     alert('Fail!');  
   }  
}); 
Prototype获取PHP返回的X-JSON头,并自动将onSuccess函数的jsonHeader参数设置为最初在PHP中设置的值的Javascript数组


只要返回到Javascript的数据量符合HTTP头中的数据量,上述场景就很好


如果需要传回大量数据,只需让PHP输出JSON编码的结果,而不是将其作为标题的一部分。然后,您可以在Ajax调用中使用响应对象的evalJSON()方法。

您不必只显示“在该PHP文件中打印的内容”,您的PHP文件可以将JavaScript打印回页面。然后,您可以在收到响应后执行这些命令。我喜欢使用
eval
函数来实现这一点,但这里的许多人会阻止您这样做:)

您不必只显示“在该PHP文件中打印的内容”,您的PHP文件可以将JavaScript打印回您的页面。然后,您可以在收到响应后执行这些命令。我喜欢使用
eval
函数来实现这一点,但是这里的许多人会阻止您这样做:)

只需使用“echo”函数将PHP变量放入标准输出put即可

echo$myVarName

或者,我更喜欢printf(),请确保在输出之前检查输入中的HTML,以避免XSS问题

使用类似以下内容:

printf(“您的输入是:%s”,带标签(%myInputVar))

另外,在输出数字时,请记住使用%d或%f格式化程序以获得最佳安全性。

只需使用“echo”函数将PHP变量放入标准输出put即可

echo$myVarName

或者,我更喜欢printf(),请确保在输出之前检查输入中的HTML,以避免XSS问题

使用类似以下内容:

printf(“您的输入是:%s”,带标签(%myInputVar))


此外,在输出数字时,请记住使用%d或%f格式设置程序以获得最佳安全性。

您所说的“使用”变量是什么意思?此时PHP表单页面不能使用任何东西,它已经完成了执行。在Javascript中使用它们?我的意思是打印它们。基本上,我试图将发送到PHP的变量打印回表单的值中,因此表单始终代表数据库中的内容。。。我只是觉得它不需要来自PHP。。。也许我可以从AJAX打印?你说的“使用”变量是什么意思?此时PHP表单页面不能使用任何东西,它已经完成了执行。在Javascript中使用它们?我的意思是打印它们。基本上,我试图将发送到PHP的变量打印回表单的值中,因此表单始终代表数据库中的内容。。。我只是觉得它不需要来自PHP。。。也许我可以从AJAX打印?为什么要为这个包含一个完整的框架呢?你不需要一个,特别是像prototype这样的。我不会把prototype称为框架。我喜欢它,因为它使Ajax调用和JSON的东西在Javascript端变得更加容易。为什么要费心为它包含一个完整的框架呢?你不需要一个,特别是像prototype这样的。我不会把prototype称为框架。我喜欢它,因为它使Ajax调用和JSON的东西在Javascript方面变得更加容易。