【问题标题】:What is wrong with my link generated from PHP?我从 PHP 生成的链接有什么问题?
【发布时间】:2009-04-06 10:46:29
【问题描述】:

在我的代码中,当我单击时,我只是超链接到 PHP 函数的锚标记。

我的代码如下。文件 another.php 由 jQuery 中的 Ajaxindex.php 调用。

另一个.php

<?php    
    echo " <a href='my.php?action=show&amp;id=".$fid."'
        onclick=\"return  display('".$fid."');\"> ";  
    echo "" .$fname."</a> ";
?>

点击后超链接失效。

我在使用前导空格时遇到问题吗?我需要更改我的代码吗?

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    如果“显示”函数返回 false,则您的 onclick 处理程序正在短路默认超链接功能。无需将 onclick 设置为“return display($fid)”,只需设置 onclick="display($fid)",超链接将始终有效。

    没有看到您的其余代码或更详细的描述,我真的无法判断还有什么问题。但这是第一个让我震惊的事情。如果元素的事件处理程序返回 false,则常规功能永远不会发生。

    【讨论】:

    • 使用ajax时你的逻辑一样吗?
    【解决方案2】:

    为什么你的第二个echo "" .$fname."&lt;/a&gt; "; ???第一个“”根本不需要在那里

    此外,空格似乎不应该在点 - 前面。

    【讨论】:

    • 点之前的那个空格实际上是没有意义的,取决于你使用的编码标准,它可能被要求在那里或被禁止。就个人而言,我删除了空间,但其他人喜欢它以提高可读性。
    • 两个有效点但都不会导致报告的问题。
    【解决方案3】:
    <?php
       echo '<a href="my.php?action=show&id='.$fid.'"
         onclick="return  display(\''.$fid.'\');">'.$fname.'</a>';
     ?>
    

    这应该可以,我总是使用 ' 表示 php 字符串,而 HTML 部分中的 " 使它更容易阅读:)

    另外更大的错误是你的链接看起来像这样:Bla 因为你做了一个自我关闭它可能显示一个没有价值的链接

    【讨论】:

      【解决方案4】:

      我不太清楚你想用一个锚标记内的所有东西来实现什么......对 onclick 事件做出反应并将浏览器重定向到另一个位置?我了解到调整&lt;a&gt; 标签功能的简单方法是:

      <a href="javascript:doStuffHere()" id="...">...</a>
      

      因此,您不要将onclick 与强制性href 混用。尝试将您的链接重建成这样。

      就您的 PHP 风格而言,当您使用双引号来分隔字符串时,您不必打破引号来插入变量内容。你可以写:

      <?php
      
      $fid = 'myId';
      $fname = 'my link name';
      
      echo "<a id=\"$fid\" href=\"javascript:doStuff()\">$fname</a>";
      
      ?>
      

      【讨论】:

      • 这种风格不允许用户在新标签页中打开页面如果链接只是改变了页面转到一篇文章例如他这样做的方式你可以留在页面上做一些事情或中键在新窗口中打开
      • 我想“所有这些东西”可能是 JS 优雅地降级。在上面的示例中,当用户没有启用 JS 时会发生什么?他们不会去任何地方,他们会有一个损坏的、无法使用的链接。为启用 JS 的人提供 onlick 更好,为未启用的人提供 href。
      • 二战持续了6年,彻底改变了世界。我们已经进入 21 世纪 9 年,有些人仍然关闭 JS?他想如何使用 AJAX 调用此页面?关闭 JS 了吗?
      • 没有JS的移动设备怎么办?基于文本的浏览器?搜索引擎试图索引链接?永远不要假设用户正在运行什么。仅仅因为很多人启用JS,并不意味着每个人都这样做。 accessites.org/site/2007/02/…
      • 请参考问题:“我的代码:我通过 ajax 调用 another.php,从 index.php 使用 JQuery” JQuery 魔术和基于文本的浏览器?我试图回答这个问题,而不是争论在每个 Web 应用程序中采用这种方法是否 /good/。 :)
      【解决方案5】:

      就像其他人提到的那样,它可能与 JavaScript 返回有关。因为我真的不能说 PHP 代码本身有什么问题会导致问题。

      不过,我确实有一些技巧可以让您的代码更容易阅读。

      我对处理字符串的第一个建议是永远不要强迫自己转义 ' 或 "。通过切换引号样式,您可以更轻松地阅读代码并更轻松地查找由引号引起的问题。

      echo " <a href='my.php?action=show&amp;id=".$fid."' onclick=\"return display('".$fid."');\"/> ";

      这将变成:

      echo ' <a href="my.php?action=show&amp;id='.$fid.'" onclick="return display("'.$fid.'");"> '.$link_title.'</a>;

      实际上,在输入此内容时,我注意到您没有获得超链接,因为您没有完成锚标记。更具体地说,您将使用 / 提前终止它。在上面的示例中,我添加了:

      .$link_title.'</a> 这应该可以解决问题。

      第二个建议:

      echo "" .$fname."</a> "; 可以像这样轻松地输入:

      echo $fname.'</a> ';

      对于不需要服务器额外工作的字符串,建议使用 ' 而不是 ",并且不需要前导的 ""。

      编辑:

      echo ' <a href="my.php?action=show&amp;id='.$fid.'" onclick="return display("'.$fid.'");"> '.$fname.'</a>;
      

      这行得通吗?是否显示链接?

      【讨论】:

      • 超链接用于 fname,我也包括在内,我的问题是我无法在 ajax 中获取超链接
      猜你喜欢
      • 2012-12-04
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多