我显示了一个搜索结果 - 在这里有一个锚标记,如下所示。
<div class="addfriend">
<a href="add_friend.php?from=kpkdhar22&id=2" id="2" target="_blank" onclick="addfriend(1, 2)">Add as friend</a>
</div>
我这样做是因为,我想保留我的搜索结果。我不想做POST
- REDIRECT
- GET
方法。我正在使用AJAX更新朋友嵌套数据库表。如果我阻止对锚标记的默认操作,则链接将在同一页面中打开并重定向到add_friend.php?from=kpkdhar22&id=2
,更新数据库,当按下后退时,搜索结果页面会显示错误消息并且搜索消失。我想保留target="_blank"
,因为如果在浏览器中没有启用JS,它将在php中执行。
我可以执行除锚标记之外的JS函数,但仍然有一个新选项卡。
我的AJAX代码是这样的:
function addfriend(fid, uid) {
// uid -- person sending friends request
// fid -- person receiving friends request
var id = '#' + uid;
$("id").parent().empty().addClass("friend").removeClass("addfriend").html("<span>Request sent</span>");
var userid = uid;
var friendid = fid;
var status = 'N';
var dataString = 'userid=' + uid + '&friendid=' + fid + '&status=' + status;
$.ajax({
type : "POST",
url : "js/add_friend.php",
data : dataString,
cache : true,
success: function (html) {
var id = '#' + uid; // is this ok as selector
$("id").parent().empty().addClass("friend").removeClass("addfriend").html("<span>Request sent</span>");
},
error : function () {
$("#errors").html('');
$("#errors").html('Failed to send your request.');
}
});
}
当执行函数addfriend(1,2)
时,会打开一个新选项卡,在add_friend.php中会显示一条JS警告消息,我立即关闭该选项卡。但AJAX成功函数没有执行,所以我在AJAX调用之前添加了相同的功能,但这也没有用。
控制台消息 - XHR已完成加载:POST“http://localhost/bp1/js/add_friend1.php”。
请建议我一些过程,或者我错误的步骤。
此致 Poorna。
答案 0 :(得分:0)
你必须让你的链接停止这样做。你在addfriend()
函数中的AJAX调用会使这一点复杂化,但不会太多。首先,将链接的“onclick”属性更改为
onclick="return addfriend(1, 2)"
即。添加return
语句,并将其添加到addfriend()
JS函数的最后(在AJAX调用之后):
return false;
这会欺骗DOM认为您点击了链接,但由于某种原因它不顺利,浏览器不应该遵循“href”URL。