【问题标题】:Please check this for errors [closed]请检查此错误[关闭]
【发布时间】:2011-08-27 22:44:19
【问题描述】:
<html>
  <head>
    <script type="text/javascript" src="jquery-1.6.1.js"></script>
    <script>
      $('a').click(function(e) {
        e.preventDefault();
        document.location.href='http://www.redirectlink.com?ref='+this.href;
        return false;
      });
    </script>
</head>

<?php          
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, 'http://192.168.0.14:8081/home/');
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  $curl_response = curl_exec($ch);
  curl_close($ch);

  echo $curl_response;     
?>

这应该有效吗?它卷曲一个页面,然后当您单击页面上的链接时,它应该重定向到http://www.redirectlink.com?ref='+this.href 卷曲部分有效,但它不重定向。它仍然将我带到原始网址。 jquery-1.6.1.js 文件与所有其他文件位于同一目录中。

编辑:问题已解决。需要准备好 javascript。

【问题讨论】:

    标签: php jquery curl


    【解决方案1】:

    我不是 jquery 专家,但我相信你需要一个现成的函数

    $.ready(function() {  
       $('a').click(function(e){  
          e.preventDefault();  
          document.location.href='http://www.redirectlink.com?ref='+this.href;  
          return false;  
       });  
    });
    

    试试上面...

    【讨论】:

    • 谢谢!有用。一旦我可以接受答案:)
    【解决方案2】:

    重定向?

    四个问题:

    1)。您在文档加载之前调用了 $('a') 选择器。你不会得到任何A。您需要将其包装在 document.ready 或类似的东西中。

    $(document).ready(function(){
      //put your script block here.
    });
    

    2)。您需要在 this.href 上编码 UriComponent。

    3)。您似乎假设它是完全限定的 URL,而不是相对 URL。

    4)。如果您要查找的是重定向,则只需使用重定向标头(不需要 CURL):

    if (array_key_exists('ref', $_GET))
    {
      header('Location: '.$_GET['ref']);
      exit;
    }
    

    注意 - 这必须高于任何输出...基本上,将您的 php 块移动到文件的最顶部。


    澄清。根本不是重定向器:

    if (array_key_exists('ref', $_GET))
    {
       echo file_get_contents($_GET['ref'];
    }
    

    上面的代码块用 3 行易于理解的行替换了所有 PHP 代码。

    【讨论】:

    • 谢谢,它似乎按原样工作。这只是代码的一部分。我已经为相关网址做了帐户。
    • 我刚刚向 PHP 部分添加了一个说明...确保您明白这一点。 :)
    • 在您发表评论后,我修改了 PHP(第 4 期)。它之前没有进行密钥检查。如果您进行重定向,我不知道 CURL 对您有什么好处,所以我考虑了这一点。
    • 解释起来很复杂。我通过 curl 获取页面,然后当单击任何链接时,它会重定向并卷曲该链接。否则,当点击链接时,它们会返回到原始站点
    • @Michael:这个答案值得接受,不是我的。原因是@John 花了一些时间来解释为什么你的东西不起作用。第 2 点也需要注意。我会鼓励你 (@Michael) 像 @John 那样发布你的答案,而不是像我的那样:)
    【解决方案3】:

    另外,脚本不应该以:

    <script type="text/javascript">
    ...
    </script>
    

    【讨论】:

    • 首选但不是强制性的,尤其是在 HTML5 中。 JavaScript 现在是默认语言(就像以前一样)。 :)
    • 谢谢,一直用这个,没想到现在不是强制的
    【解决方案4】:

    @Mayank,

    是正确的,

    这样做:

    <script>
    $(document).ready(function(){
        $('a').click(function(e){
            e.preventDefault();
            document.location.href='http://www.redirectlink.com?ref='+this.href;
            return false;
        });
    });
    </script>
    

    【讨论】:

      【解决方案5】:

      你需要像这样包装整个东西:

      jQuery(document).ready(function($) { [your code] });
      

      【讨论】:

        【解决方案6】:

        更重要的是,我认为

        e.preventDefault();
        

        return false;
        

        有相同的行为。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-19
          • 2014-10-17
          • 2012-05-17
          • 1970-01-01
          相关资源
          最近更新 更多