0

仅当 https.get 函数不产生错误时,我才尝试提交 asp.net 登录表单。如果它返回错误,我不希望提交登录表单。当我调用 e.preventDefault() 时,登录页面只是刷新而不登录用户。

为什么是这样?

var loginForm = $('form');
var https = require("https");
var url = 'https://examplesite.com/';


loginForm.on('submit', function (e) {
        var loginSubmit = this;
        e.preventDefault();
            https.get(url, function (res) {
                res.resume();
                loginSubmit.submit();
            }).on('error', function () {
                // display error, do not login
            });
});
4

1 回答 1

0

我假设这loginForm是实际的形式,即 jQuery 中的 $('form') 。这与loginSubmit您的功能相同。

看,当 submit() 事件被引发时,你调用里面的函数,它loginSubmit.submit()再次调用。这是个问题吗?

您可以尝试将函数绑定到提交按钮的单击事件。

需要更多关于res.resume(). 你能告诉我们你的loginForm变量来自哪里吗?


更新:

我会绑定到提交按钮的点击事件。

$(document).on('click','btn#submit', function(e){
    e.preventDefault();
    // make the get call
    $.get(url)
         .done(function(){
             // success callback => submit the form.
             $('form').submit();
         })
         .fail(function(){
             // fail callback => display error.
         });
});

我对你的电话了解不多https。我也不是很清楚你的 res.resume(). 但是你现在应该有一些线索了。

于 2013-09-28T03:24:42.287 回答