【问题标题】:Retrieving PHP variables from an AJAX form input从 AJAX 表单输入中检索 PHP 变量
【发布时间】:2009-04-14 15:16:36
【问题描述】:

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

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

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

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

【问题讨论】:

  • “使用”变量是什么意思? PHP 表单页面此时不能使用任何东西,它已经完成执行。在 Javascript 中使用它们?
  • 我的意思是打印它们。基本上,我试图让已发送到 PHP 的变量打印回表单的值,因此表单始终代表数据库中的内容......我只是认为它不需要来自 PHP...我可以从 AJAX 打印吗?

标签: php ajax json


【解决方案1】:

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

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

那里有大量教程将向您展示如何做到这一点,并比这里的回复更详细地解释它。

【讨论】:

    【解决方案2】:

    使用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() 方法。

    【讨论】:

    • 为什么要为此包含一个完整的框架?你不需要一个,尤其是原型之类的。
    • 我不会将 Prototype 称为框架。我喜欢它,因为它使 Javascript 端的 Ajax 调用和 JSON 内容变得更加容易。
    【解决方案3】:

    您不必只显示“打印在那个 PHP 文件中”的内容,您的 PHP 文件可以将 JavaScript 推荐打印回您的页面。然后,您可以在收到响应后执行这些命令。我喜欢为此使用eval 函数,但是这里的很多人会阻止你这样做:)

    【讨论】:

      【解决方案4】:

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

      回显 $myVarName;

      或者,我更喜欢 printf(),一定要检查输入中的 HTMLBEFORE 以避免 XSS 问题。

      使用这样的东西:

      printf("您的输入是:%s", strip_tags(%myInputVar));

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

      【讨论】:

        猜你喜欢
        • 2014-01-30
        • 1970-01-01
        • 2018-12-06
        • 2014-10-01
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多