jquery ajax重新加载整个页面的html

时间:2010-10-01 12:35:22

标签: jquery ajax

我正在尝试在提交时从服务器加载简单的成功或失败消息。我在Ajax调用上取得了成功。但是$('#some_div')。html(数据)正在将整个原始页面返回给它。有什么我想念的吗?

$(document).ready(function() {
        $('a.favorite').click(function() {
            var song_id = $(this).attr("id");
            $.ajax({
                url: 'ajax_favorite.php?song_id=' + song_id,
                success: function(data, textStatus, req) {
                    $('#add_to_favorite_'+song_id).html(data);
                },
                error: function(req) { // req = XMLHttpRequest object
                    alert("could not reach the server");
                }
            });
            return false;
        });
    });

更新:ajax_favorite.php?song_id = 745页面上的代码是

<?php 
echo "blah blah";
?>

5 个答案:

答案 0 :(得分:0)

在ajax调用成功之后,数据变量应该具有从服务器页面返回的任何内容(ajax_favoriter.php)。因此,您可能需要检查从该页面返回的内容。您可以通过直接访问浏览器中的ajax_favorite.php?song_id = 3页面来检查(在浏览器中输入此URL)。您现在在浏览器中看到了什么当你使用html()方法

加载时,你会在div中看到的html标记

我对“整个原始页面”很困惑。你的意思是你打电话的页面?

答案 1 :(得分:0)

如果我理解正确,你说你的“数据”中会返回html页面吗?

将dataType传递给您的请求(http://api.jquery.com/jQuery.ajax/),例如json,并确保您的ajax_favorite.php?song_id = page返回json格式。

否则返回整个html。

答案 2 :(得分:0)

尝试直接导航到ajax_favorite.php?song_id=745并检查是否返回blah blah,可能是服务器重定向上存在一些错误配置,将调用重定向到index.php。

答案 3 :(得分:0)

所有评论都有助于我搜索此问题的答案。事实证明,我正在使用.htaccess并通过GET字符串来回传递信息到服务器。这导致了jQuery代码中路径的各种问题。我已经在我自己的后端代码中解释了这一点。对于正在查看此问题的其他人。如果您使用的是jQuery.get()。如果与.htaccess技巧结合使用,请确保您的路径正确并计算在内。

感谢大家的帮助

答案 4 :(得分:0)

在你的文件中ajax_favorite.php?song_id = 745 你必须检查是否(isset($ _ GET ['song_id']){如果未设置则设置不做任何事情

并确保将此代码放在没有使用html代码的页面内容之上, 在你的if条件成功之后,你只需呼应“成功”;消息并将其检入您的jquery成功代码,如此

注意:成功回显消息后,立即执行exit;命令,所以你永远不会得到底部或页面或PHP代码下面的所有html我希望这将有助于你

success: function(data) {
   if(data == 'success'){
      $('#add_to_favorite_'+song_id).html(data or put your own message here);
   }
   else{
      soemething error :D
   }
},