【问题标题】:How to load content without refresh with multiple querystring如何使用多个查询字符串加载内容而不刷新
【发布时间】:2012-01-25 11:03:42
【问题描述】:

我想使用菜单中的多个查询字符串将动态内容加载到特定的 div 名称。

示例动态菜单链接

index.php?tag=2
index.php?category=1&tag=2
index.php?category=2&tag=2&location=3

PHP中链接index.php?category=1&tag=2的示例查询过程

$tag = intval($_GET['tag']);
$cat = intval($_GET['category']);

if(isset($tag) && isset($cat)) {
$select = $db->query("SELECT * FROM table WHERE cat=".$cat." AND tag=".$tag."");
... // fetch results
}

问题 - 使用 jQuery 如何告诉用户单击链接然后将回调发送到 PHP 进程并在特定 div 名称中显示结果而不刷新页面。

告诉我

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

    说明

    1. 您必须为给定的子字符串创建另一个以 json 格式返回数据的 php 页面。您的子字符串是动态的,因此您必须从另一个元素获取子字符串。我建议<input type="hidden" value="YourQueryString"/>,它很简单。您可以将元素放在链接旁边并使用jQuery.val() 获取值。

    2. 然后在 index.php 中使用 jQuery.ajax() / jQuery.get()jQuery.post() 从该页面/脚本中获取数据。 (jQuery.get()jQuery.post() 在内部使用 jQuery.ajax()

    3. 在 jQuery ajax 的回调方法中,您获取数据并从中构建 html。 之后您可以使用jQuery.html() 将数据设置到您的div。

    样本

    html/php

    <a class="AnyClassName">Click me</a>
    <input type="hidden" value="category=1&tag=2"/>
    

    jQuery

    $(".AnyClassName").click(function() {
        // lets get the query string
        var queryString = $(this).next().val();
        $.ajax({
          url: "yourNewPage.php?" + queryString,
          context: document.body,
          success: function(data){
            var generatedHtml = "..." // build your html from the data object
            $("#IdOfYourDiv").html(generatedHtml);
          }
        });
    });
    

    更新

    或者,您的 php 页面可以为您的查询字符串返回 html(简单页面)。这比在jQuery Ajax Callback 中构建 html 更容易。如果这样做了,你可以这样做

    $(".AnyClassName").click(function() {
        // lets get the query string
        var queryString = $(this).next().val();
        $('#IdOfYourDiv').load("yourNewPage.php?" + queryString);
    });
    

    更多信息

    文档

    教程

    【讨论】:

    • 谢谢dknaack。你让我走上了正轨。问题,在url:"yourNewPage.php?category=1&amp;tag=2" 上如何使其具有动态性?假设我点击index.php?category=2&amp;tag=2&amp;location=3
    • 很高兴为您提供帮助,祝您有美好的一天!
    【解决方案2】:

    使用 jQueries 许多 AJAX 函数之一,例如:

      $.post("ajax.php", "category=1&tag=2",
       function(data) {
         alert("Data Loaded: " + data);
       });
    

    检查: http://api.jquery.com/jQuery.post/

    【讨论】:

      【解决方案3】:

      你的 PHP 脚本应该返回你想要加载到 div 中的 HTML; JS 看起来像这样:

      $('#your_menu').on('click', 'a', function(e) {
        var $this = $(this),
            url = $this.href;
      
        $.ajax({
          url: url,
          success: function(html) {
            $('#div_to_update').html(html);
          }
        });
      });
      

      它从您在菜单中单击的链接获取 URL,将 URL 传递给 Ajax 调用,并用 HTML 响应填充目标 div。有关此主题的更多信息,请参阅 here

      【讨论】:

      • hmmmm 链接没有解释...先生,您要求被否决。
      • 我认为他需要的一切都在那个链接后面,但是没关系。我认为这是一个“我什至从哪里开始”的问题。
      • StackOverflow 上的答案是独立的。链接只要附有解释、示例代码和/或链接内容的引用就可以了。这将是一个更好的评论。
      【解决方案4】:

      您可以为此使用jQuery.load()(Javascript - 客户端):

      $('#id_of_the_div').load('index.php?category=1&tag=2');
      

      查看http://api.jquery.com/load/ 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2016-06-16
        • 1970-01-01
        • 2014-11-03
        • 2014-06-14
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        相关资源
        最近更新 更多