首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery Ajax POST函数未成功工作

Jquery Ajax POST函数未成功工作
EN

Stack Overflow用户
提问于 2014-05-26 18:35:52
回答 2查看 44关注 0票数 0

我在jQuery Ajax的按钮点击事件上使用验证的东西。如果返回值为1,此方法将显示一条警告消息,否则返回true并转到button方法。显示事物和阻止按钮方法的验证和警报运行良好。如果不想做任何事情并返回true来点击按钮,则该方法不起作用。

这是我的jQuery ajax方法。

代码语言:javascript
运行
复制
$(function () {
    $('#customerSubmit').on('click', function (event) {

        debugger;
        event.preventDefault();
        var title = $('#Title').val();
        var firstName = $('#FirstName').val();
        var phoneNo1 = $('#PhoneNo1').val();
        var Email = $('#Email').val();
        var address1 = $('#AddressLine1').val();

        $.ajax({
            type: 'POST',
            url: '/Customer/IsExistCustomer',
            data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
            success: function (data) {
                if (data == 1) {
                    alert('This Customer Already Exist');
                    return false;
                }
                else {
                    return true;
                }
            }
        });
    });
});

请帮我理清头绪,

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-05-26 18:40:26

您不能同步地从异步操作返回。

这里有一个关于一般问题的很好的QA:How do I return the response from an asynchronous call?

对于您的特定问题,您应该使用按钮而不是提交元素,并在回调中执行操作(提交表单):

代码语言:javascript
运行
复制
$(function () {
    $('#customerSubmit').on('click', function (event) {
        var form = this.form; // <- depends on your DOM
        var title = $('#Title').val();
        var firstName = $('#FirstName').val();
        var phoneNo1 = $('#PhoneNo1').val();
        var Email = $('#Email').val();
        var address1 = $('#AddressLine1').val();
        $.ajax({
            type: 'POST',
            url: '/Customer/IsExistCustomer',
            data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
            success: function (data) {
                if (data == 1) {
                    alert('This Customer Already Exist');
                }
                else {
                    form.submit(); // <- now submit the form
                }
            }
        });
    });
});
票数 1
EN

Stack Overflow用户

发布于 2014-05-26 18:55:55

代码中有几个问题:

  • 你正在尝试从一个异步函数返回一个值。调用'success‘时,启动ajax调用的函数已经终止。
  • 如果您处理按钮上的单击,用户仍然可以通过在字段中键入ENTER/RETURN键来提交表单。您应该改为处理表单的“submit”事件。

我要说的是,你应该截取“submit”事件处理函数preventDefault(),并执行一个ajax调用来提交表单,并处理错误以向用户提供某种类型的反馈。

如果您绝对想对服务器执行两个请求,而不是一个(一个用于检查,一个用于提交),则可以在“成功”处理程序中执行第二个ajax调用:

代码语言:javascript
运行
复制
    $.ajax({
        type: 'POST',
        url: '/Customer/IsExistCustomer',
        data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
        success: function (data) {
            if (data !== 1) {
                $.ajax({
                    type: $(form).attr("method"),
                    url: $(form).attr("action"),
                    data: $(form).serialize(),
                    success: function (data) {

                    }
                });
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23868205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档