首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >语义UI : api与ajax调用

语义UI : api与ajax调用
EN

Stack Overflow用户
提问于 2017-07-22 20:15:06
回答 1查看 1.3K关注 0票数 0

我有一个包含两个字段的表单,用户名和密码。我使用语义UI / JQuery提交表单。

代码语言:javascript
运行
复制
  $(document).ready(function () {

        $('#ValidateUser').form(
            {
                on: 'submit',
                fields: {
                    username: {
                        identifier: 'username',
                        rules: [{
                            type: 'empty',
                            prompt:'Username cannot be empty'
                        }]
                    },
                    password: {
                        identifier: 'password',
                        rules: [{
                            type: 'empty',
                            prompt:'Password cannot be emtpy'
                        }]
                    }
                },
                onSuccess: function(event){
                    event.preventDefault();
                    $.api({
                        url: '@Url.Action("Login", "Validation")',
                        serializeForm: true,
                        data: new FormData(this),
                        onSuccess: function (result) {
                            result.preventDefault();
                            if (result.Success) {
                                window.location = "/Dashboard/Dashboard";
                            }
                            else {

                                $('#formresult').append(result.Msg);
                            }
                            return false;
                        }
                    });

                }
            });
    });

然而,这并不起作用。如果我将语义UI .api调用替换为$.ajax调用,它会工作得很好。

代码语言:javascript
运行
复制
        $(document).ready(function () {

        $('#submitbutton').click(function(){
            $('#formresult').hide();
        });

        $('#ValidateUser').form(
                 {
                     on: 'blur',
                     fields: {
                         username: {
                             identifier: 'username',
                             rules: [{
                                 type: 'empty',
                                 prompt: 'Username cannot be empty'
                             }]
                         },
                         password: {
                             identifier: 'password',
                             rules: [{
                                 type: 'empty',
                                 prompt: 'Password cannot be emtpy'
                             }]
                         }
                     },

                     onSuccess: function (event) {
                         $('#formresult').hide();
                         event.preventDefault();
                         var formData = new FormData(this);
                         $.ajax({
                             url: '@Url.Action("Login", "Validation")',
                             type: "POST",
                             dataType: "json",
                             contentType: "application/json; charset=utf-8",
                             data: formData,
                             contentType: false,
                             processData: false,
                             success: function (result) {

                                 if (result.Success) {
                                     window.location = "/Dashboard/Dashboard";
                                 }
                                 else {
                                     $('#formresult').show();
                                     $('#formresult').text(result.Msg);
                                 }


                             },
                             error: function (result) {
                                 $('#formresult').show();
                                 $('#formresult').text(result);
                             }
                         });
                         event.preventDefault();
                     }
                 });


    });

有人能帮我找出为什么.api语义调用不起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-22 21:55:40

我自己设法解决了它,以备将来有人遇到同样的麻烦时参考,下面是我是如何解决它的。我通过管道传递.api调用,而不是在表单验证的onsuccess中调用它。

下面是完整的代码。

代码语言:javascript
运行
复制
$(document).ready(function () {

        var urllink = '@Url.Action("Login", "Validation")';


        $('#ValidateUser').form(
                                 {
                                     on: 'blur',
                                     fields: {
                                         username: {
                                             identifier: 'username',
                                             rules: [{
                                                 type: 'empty',
                                                 prompt: 'Username cannot be empty'
                                             }]
                                         },
                                         password: {
                                             identifier: 'password',
                                             rules: [{
                                                 type: 'empty',
                                                 prompt: 'Password cannot be emtpy'
                                             }]
                                         }
                                     },
                                     onSuccess: function (event) {
                                         $('#formresult').hide();
                                         $('#formresult').text('');
                                         event.preventDefault();
                                         return false;
                                     }

                                 }
                               )
                             .api({
                                 url: urllink,
                                 method:'POST',
                                 serializeForm: true,
                                 data: new FormData(this),
                                 onSuccess: function (result) {
                                    $('#formresult').show();
                                    if (result.Success) {
                                        window.location = "/Dashboard/Dashboard";
                                    }
                                    else {

                                        $('#formresult').append(result.Msg);
                                    }
                                    return false;
                                }
                });


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

https://stackoverflow.com/questions/45254425

复制
相关文章

相似问题

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