我在PHP中有一个表单将变量发送到PHP文件,该文件适当地将它们插入到MySQL表中。
我目前有一个div显示来自PHP的响应(这是由PHP打印的任何内容)。
一切正常。问题是我想使用在PHP MySQL插入过程中创建/更新的变量。即不仅显示该PHP文件中打印的内容,还使用这些变量。
我已经看到JSON编码的复杂使用可能会跨越这个鸿沟,但我很想知道这是否是最简单的方法。如果有人在这个主题上有任何好的链接或例子。
答案 0 :(得分:1)
我假设您希望能够将多个数据通过AJAX发送回您的页面并进行操作。
JSON确实是最简单的方法。如果使用PHP5,则可以使用PHP端的json_encode()将复杂的数据类型(例如对象或数组)发送回浏览器页面。然后在javascript中,对发回的数据使用eval()(例如:var data = eval(response);),将其解析为javascript中可用的复杂类型。
有大量的教程可以告诉你如何做到这一点,并进一步详细解释它,而不是这里的回应。
答案 1 :(得分:0)
使用PrototypeJS并按照以下方式执行操作:
有这样的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) . ')');
}
然后像这样进行Ajax调用
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()方法。
答案 2 :(得分:0)
您不必只显示“在该PHP文件中打印”的内容,您的PHP文件可以打印回报您页面的JavaScript。然后,您可以在收到响应后执行这些命令。我喜欢使用eval
函数,但是这里有很多人会阻止你这样做:)
答案 3 :(得分:0)
只需使用“echo”函数将PHP变量放入标准输出put。
echo $ myVarName;
或者,我更喜欢printf(),请务必在输出的 BEFORE 输入中检查HTML,以避免XSS问题。
使用类似的东西:
printf(“你的输入是:%s”,strip_tags(%myInputVar));
另外,请记住在输出数字时使用%d或%f格式化程序以获得最佳安全性。