发送ajax请求前显示确认信息

10

我编写了一个 ajax 函数,想在提交表单前显示确认消息。如何在我的条件中添加它?以下是我的代码。

$.ajax({
                        url: "UBRDashboard.aspx/GetDllValue",
                        dataType: "json",
                        type: "POST",
                        contentType: 'application/json; charset=utf-8',
                        data: JSON.stringify({ ddlOduModel: ddlOduModel, ddlAntModel: ddlAntModel, ddlOMTModel: ddlOMTModel, ddlSapID: ddlSapID, ddlVendorName: ddlVendorName, strReqID: r.d, ddlSapDescVal: ddlSapDescVal, SITE_ADD: SITE_ADD, LATITUDE: LATITUDE, LONGITUDE: LONGITUDE, ddlEQP_SEQ: ddlEQP_SEQ, txtLinkID: txtLinkID, RJ_QUANTITY: RJ_QUANTITY, USER_NAME: USER_NAME, CREATED_DATE: CREATED_DATE, LOCATIONTYPE: LOCATIONTYPE, TOWERTYPE: TOWERTYPE }),
                        async: true,
                        processData: false,
                        cache: false,
                        success: function (r) {
                            if (r.d == "OK") {
                                alert('Record Saved successfully');
                                window.location.href = "UBRDashboard.aspx";
                            }
                        },
                        error: function (xhr) {
                            alert('Error while selecting list..!!');
                            window.location.href = "ErrorPage.aspx";
                        }
                    })
                },
                error: function (xhr) {
                    alert('Error while selecting list..!!');
                    window.location.href = "ErrorPage.aspx";
                }
7个回答

17

解决方法是使用beforeSend Ajax 属性。

beforeSend 是一个预请求回调函数,在发送请求之前执行。如果在 beforeSend 函数中返回 false,则会取消请求。

beforeSend:function(){
     return confirm("Are you sure?");
},

AJAX

$.ajax({
      url: "UBRDashboard.aspx/GetDllValue",
      dataType: "json",
      type: "POST",
      contentType: 'application/json; charset=utf-8',
      data: JSON.stringify({ ddlOduModel: ddlOduModel, ddlAntModel: ddlAntModel, ddlOMTModel: ddlOMTModel, ddlSapID: ddlSapID, ddlVendorName: ddlVendorName, strReqID: r.d, ddlSapDescVal: ddlSapDescVal, SITE_ADD: SITE_ADD, LATITUDE: LATITUDE, LONGITUDE: LONGITUDE, ddlEQP_SEQ: ddlEQP_SEQ, txtLinkID: txtLinkID, RJ_QUANTITY: RJ_QUANTITY, USER_NAME: USER_NAME, CREATED_DATE: CREATED_DATE, LOCATIONTYPE: LOCATIONTYPE, TOWERTYPE: TOWERTYPE }),
      async: true,
      processData: false,
      cache: false,
      beforeSend:function(){
         return confirm("Are you sure?");
      },
      success: function (r) {
        if (r.d == "OK") {
        alert('Record Saved successfully');
        window.location.href = "UBRDashboard.aspx";
      },
      error: function (xhr) {
             alert('Error while selecting list..!!');
             window.location.href = "ErrorPage.aspx";
      }
});

1
这完美地被 Ajax 处理了!运行得像魔法一样。 - Nad

1
使用ajax的beforeSend回调函数。
beforeSend: function () {
                    if(confirm("Are you sure?")){
                        // do something
                    } else { 
                        // stop the ajax call
                        return false;
                    }
                },

请查看Ajax文档http://api.jquery.com/jquery.ajax/


0

0

我最近遇到了这个问题,这是我的答案,我正在使用jquery和jqueryconfirm,"beforesend"回调只允许标准的"alert"和"confirm"函数。

我所做的是放置一个"假"提交按钮并隐藏实际的提交按钮,这样很容易处理来自自定义确认对话框的响应,一旦我从对话框中获得肯定的答案,我就调用隐藏提交按钮的"click"方法。

...
<button id="confirmSave" type="button">Save</button>
<button id="save" class="is-hidden" type="submit"></button>
<button id="close" aria-label="close" type="reset">Cancel</button>
...

0

将您的ajax编写成一个函数,例如:

function save(){
   // something in here 
}

接着编写确认功能,若用户确认,则调用save()函数


0

也许这个例子是你需要的吗?

var r = confirm("Press a button!");
if (r == true) {
    // Make your ajax call here
} else {
    // He refused the confirmation
}

在进行ajax调用之前,先调用确认函数吗?


0
if ( confirm("Do you want to Submit?")) {
    // If you pressed OK!";

 $.ajax({
  url: "UBRDashboard.aspx/GetDllValue",
  dataType: "json",
  type: "POST",
  contentType: 'application/json; charset=utf-8',
  data: JSON.stringify({ ddlOduModel: ddlOduModel, ddlAntModel: ddlAntModel, ddlOMTModel: ddlOMTModel, ddlSapID: ddlSapID, ddlVendorName: ddlVendorName, strReqID: r.d, ddlSapDescVal: ddlSapDescVal, SITE_ADD: SITE_ADD, LATITUDE: LATITUDE, LONGITUDE: LONGITUDE, ddlEQP_SEQ: ddlEQP_SEQ, txtLinkID: txtLinkID, RJ_QUANTITY: RJ_QUANTITY, USER_NAME: USER_NAME, CREATED_DATE: CREATED_DATE, LOCATIONTYPE: LOCATIONTYPE, TOWERTYPE: TOWERTYPE }),
  async: true,
  processData: false,
  cache: false,
  beforeSend:function(){
     return confirm("Are you sure?");
  },
  success: function (r) {
    if (r.d == "OK") {
    alert('Record Saved successfully');
    window.location.href = "UBRDashboard.aspx";
  },
  error: function (xhr) {
         alert('Error while selecting list..!!');
         window.location.href = "ErrorPage.aspx";
  }
 });

} else {
    // If you pressed Cancel!";

}

请检查window.confirm

所以在进行 Ajax 调用之前,我必须编写确认部分吗? - Nad
是的,你需要用if else语句包装ajax调用。 - Tuhin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接