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