【问题标题】:How do I pass form data from JavaScript to PHP and back again?如何将表单数据从 JavaScript 传递到 PHP 并再次返回?
【发布时间】:2011-08-10 00:10:47
【问题描述】:

我有一个这样的按钮:

<a href="#" onclick="do_something()">Click Me</a>

像这样的图像字段(或 YouTube 嵌入,或需要更改值的东西):

<img src="<?php get_src(); ?>" />

当用户点击按钮时,do_something() 需要从 PHP 文件发送数据,该文件处理一个数组(在本例中为 JSON,但这无关紧要),然后发回下一个值。

基本上,当您打开页面时,get_src() 包含数组的第一项,单击do_something() 会将信息发送到 PHP 表单以接收数组中的另一个项,然后再将数据发送回文件,并更新get_src()

我有什么概念上的错误吗?我真的不知道是不是这样。

【问题讨论】:

    标签: php javascript ajax forms


    【解决方案1】:

    长答案:使用AJAX (tutorial here)

    【讨论】:

      【解决方案2】:

      使用 jQuery,您可以将 Ajax 帖子绑定到 PHP 文件,如下所示:

      $('#myLink').click(function() {
          var myData = 'myData';
      
          /* post JSON */ 
            $.post('myAjax.php', {data: myData},
                  /* Callback function */                      
                  function(data){
                  }
            , 
            'json');  
      
      });
      

      在 myAjax.php 中,你可以有类似的东西:

      $myData = $_POST['data'];
      // do something with data
      echo json_encode($jsonResult);
      

      当 myAjax.php echo 的响应时,会触发 jQuery 回调函数,在这里你可以运行一些执行。

      【讨论】:

        【解决方案3】:

        按照 kpower 的建议,使用 AJAX。或者更好的是,试试JQuery Ajax,虽然后来基本上提供了一种简单而有趣的方式来进行 ajax 调用。

        Here 是来自 sitepoint 关于 jquery ajax 的一个很好的教程。

        编辑

        在服务器端,要向调用AJAX方法返回一些数据,可以使用json_encode函数。它以 JSON 格式从您的数据中生成一个字符串。然后你可以只 echo 将该字符串传递回 ajax 回调函数。

        请记住,将数据作为对 ajax 的响应返回就像使用 PHP 将数据打印到网页中一样,您只需 echo/print 即可。

        还要小心这些情况 -

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title>First Tag library Example - EL Function</title>
        </head>
        <body>
        <?php echo $your_json_response_string; ?>
        
        </body>
        </html>
        

        如果您像上面一样回显字符串,那么整个内容,包括所有 HTML 标记和其他内容,都将作为 ajax 调用的响应发送。如果您只需要传递一些数据,例如根据某些请求从数据库中传递一些交易金额,请改为执行此操作 -

        <?php
            // do your processing, but print/echo nothing
            ..........
            // Convert your result into a json_string
            ..........
        
            echo $your_json_response_string;
        ?>
        

        【讨论】:

        • 是的,这就是我一直在使用的。但是,我不确定在 PHP 端该怎么做。我正在使用$.get('process.php', function(data) { $('#results').html(data); }); 获得结果,但是在process.php 结束时我该怎么办?我应该只使用echo吗?
        • @altrier:查看编辑。如果您仍有问题,请回复评论。
        猜你喜欢
        • 2021-09-18
        • 2012-08-31
        • 2013-05-03
        • 2017-10-19
        • 2011-07-14
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多