我正在尝试在提交时从服务器加载简单的成功或失败消息。我在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";
?>
答案 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
}
},