1

我正在创建一个小程序,其中我在单个页面中使用两个选项卡并调用一个 ajax 调用来动态执行操作。

下面是我的代码:

OffyApp 代理 ListHub 代理下方的 HTML 代码

    <div id="Home" class="tabcontent">
    // Some code
    </div>

    <div id="News" class="tabcontent">
    // Some code
    </div>

下面的脚本代码

function openPage(pageName,elmnt,color) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }
  tablinks = document.getElementsByClassName("tablink");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].style.backgroundColor = "";
  }
  document.getElementById(pageName).style.display = "block";
  elmnt.style.backgroundColor = color;
}

// 获取 id="defaultOpen" 的元素并点击它 document.getElementById("defaultOpen").click();

下面的 AJax 调用

$.ajax({
url: "sendInvite.php",
type: "POST",
data: {list: inviteEmails},
                dataType: "JSON",
                beforeSend: function() {
                    $("#loading-image").show();
                 },
                success: function (data) {
                  //alert(data);
                    if (data.status == 200) {
                        alert("Invite Sent Successfully.");
                        location.reload(true);

                    }
                },
                error: function (msg) {
                    alert(msg);
                }
            });

如果 ajax 调用给我成功,那么我想重定向到我的第二个标签,比如#News

4

2 回答 2

0

你可以写一个函数

function activateTab(tab){
    $('.tab-pane a[href="#' + tab + '"]').tab('show');
};

然后在您的 ajax 调用成功后,您可以activateTab('news');

但正如@Ritesh 所说,该函数不会运行,因为data它不包含调用success它的键,它只会包含您从服务器获取的数据。您需要将所有参数传递到成功回调中才能访问响应代码。

于 2019-11-21T17:55:48.920 回答
0
success: function (data) {
       if (data.status == 200) {
           alert("Invite Sent Successfully.");
           location.reload(true);                   
    }}

data.statusonly 会给你一个错误,因为数据既不是 JSON 也data没有密钥status

因此,您的 if 语句总是错误的。data是来自请求文件的纯文本的实际响应。因此数据没有像status.(例如datais the request.responseText)这样的键

jQuery Ajax 函数具有三个变量:

success: function (a,b,c){}

在哪里:

a是实际的responseText

btextStatus&

cxhr

因此,您必须将成功函数编写为:

success: function (data,stxt,xhr){
    if(xhr.status==200){
        alert("Invite sent successfully!");
        window.location.reload();
    }
}
于 2019-11-21T17:50:33.910 回答