使用target =“_ blank”在Jquery AJAX和PHP之间切换

时间:2016-02-21 07:04:22

标签: php jquery ajax

我显示了一个搜索结果 - 在这里有一个锚标记,如下所示。

<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。

1 个答案:

答案 0 :(得分:0)

你必须让你的链接停止这样做。你在addfriend()函数中的AJAX调用会使这一点复杂化,但不会太多。首先,将链接的“onclick”属性更改为

onclick="return addfriend(1, 2)"

即。添加return语句,并将其添加到addfriend() JS函数的最后(在AJAX调用之后):

return false;

这会欺骗DOM认为您点击了链接,但由于某种原因它不顺利,浏览器不应该遵循“href”URL。