从AJAX表单输入中检索PHP变量

时间:2009-04-14 15:16:37

标签: php ajax json

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

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

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

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

4 个答案:

答案 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格式化程序以获得最佳安全性。