【问题标题】:Sending data to the clicked url via AJAX/PHP通过 AJAX/PHP 将数据发送到点击的 url
【发布时间】:2012-08-21 20:08:54
【问题描述】:

我似乎无法向我点击的链接发送数据。我得到的只是我的 php 文件中未定义的索引。

<a href="output.php"> Click me </a>

('a').click(function(){


    href = "output.php";

    $.post( 'output.php', { output: "hello"},
         function( data ) {


     window.location = href;
     }
     );

     return false;
  });

ajax 成功发送,但页面重定向到 output.php 页面,错误提示“输出”索引不存在。

<?php

$content = $_POST['output'];
echo $content;



?>

帮助任何人?这太令人困惑了。

【问题讨论】:

    标签: javascript php ajax url


    【解决方案1】:

    试试这个:

    Demo.php

    <html>
        <head>
                <title>Demo</title>
        </head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" ></script>
        <script type="text/javascript">
         $(document).ready(function(){
                $("a").click(function(){
    
                        $.post( 'output.php', { output: "hello"},function( data ) {
                                $("div").append(data);
            }
            );
    
                });
              });
        </script>
        <body>
                <a href="#">Click Me</a>       
                <div></div>
        </body>
    </html>
    

    输出.php

    <?php
     echo "<pre>";
     print_r($_POST);
     echo "</pre>";
     exit;  
    ?>
    

    【讨论】:

      【解决方案2】:

      好的。我仍然不确定您要做什么,或者您发布的代码与它有何关系。但是如果你想通过 Ajax 向服务器发送数据,然后让浏览器加载 output.php 并显示该数据,你可以这样做:

      在你的 PHP 中:

      if(isset($_POST["output"])){
          $output = $_POST["output"];
          echo $output;
      } elseif (isset($_GET["output"])){
          $output = $_GET["output"];
          echo $output;
      }
      

      在您的成功回调中: window.location = href + "?output="+data

      【讨论】:

        【解决方案3】:

        这是因为 output.php 被加载了两次:一次是在您的 Ajax 请求中,一次是在您更改 window.location 时。

        第二次,$_POST 中没有任何内容,因为此时浏览器没有发出 post 请求。

        为了清晰而添加:

        如果您使用 Firebug,并取出 window.location 行,您应该会看到 Ajax 请求发出并来自服务器的响应。

        【讨论】:

        • 感谢澄清,但有没有办法让它在发送 ajax 时加载到页面?
        • Ajax 并不是这样工作的。 Ajax 向 output.php 发出请求。那个时候,$_POST 就有了你的价值。当您回显时,响应确实会发送到浏览器,但是您必须在成功回调中对其进行处理。试试这个:删除 window.location 语句,或者只是将其注释掉。将其替换为:console.log(data) 在您的控制台中,您将看到从服务器回显的内容。
        • 那么有没有办法解决这个问题?我只是想将文本/字符串发送到我点击的链接
        • output.php 理论上可以是整个页面。您甚至可以在成功回电时使用$(body).html(data)。或者只是将内容放入
          .
        • 我想我知道你在解释什么......基本上从 output.php 加载内容替换当前内容而不更改 URL?顺便说一句,感谢所有帮助。
        猜你喜欢
        相关资源
        最近更新 更多
        热门标签