当用户单击某些按钮并提交某些表单时,我需要向用户请求其他凭据。
我尝试这样做的方式是:
- 拦截提交事件,中止它,并存储一个副本
- 通过提示对话框询问凭据(不是 JS 原生的,所以这都是非阻塞的)
- 如果用户输入凭据,则将字段插入事件数据并将其发送到服务器。
我当前的 AJAX 请求代码是:
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
if (ajaxOptions.type === "POST") {
$.current_request = jqXHR;
jqXHR.abort();
$.check_password_with_my_dialog();
}
});
$.check_password_with_my_dialog: function() {
$("#validate-password-prompt").dialog({
modal: true,
title: "input pw",
buttons: {
Ok: function() {
$.password = $("#validate-password-prompt input").val();
$.deliver_current_request();
return $(this).dialog("close");
},
Cancel: function() {
return $(this).dialog("close");
}
}
});
}
deliver_current_request: function() {
$.current_request.beforeSend = function(jqXHR, ajaxOptions) {
ajaxOptions.data = ajaxOptions.data.concat("&password=" + $.password);
};
$.ajax($.current_request);
}
到目前为止的问题ajaxOptions.data
是未定义,所以我无法添加我的数据。并且请求似乎是作为 GET 而不是 POST。
我这样做是正确的方式,还是我的方式?