JQuery选错了__RequestVerificationToken

时间:2017-10-08 14:42:37

标签: javascript jquery ajax asp.net-mvc

我在我的网页上遇到了一个问题:我有2 __RequestVerificationToken被渲染(1表示注销表单,1表示提交表单在部分视图中呈现)。

现在一切正常,但是只要我向控制器方法添加[ValidateAntiForgeryToken],服务器就会抱怨没有令牌传递给控制器​​。

我正在使用

获取令牌
$('form').submit(function (e) {
    // ...some code
    var token = $('input[name="__RequestVerificationToken"]', this).val();
    // ...more code
});

但似乎总是得到错误形式的令牌。这是为什么?在获取值时使用this时,是否应该定位提交的表单?

更新

这是我完整的ajax请求:

$.ajax({
    url: this.action,
    type: this.method,
    data: { __RequestVerificationToken: token, lead: formdata },
    processData: false,
    contentType: false,
    beforeSend: function () {
        $('form .btn').prop('disabled', true);
    },
    success: function (result) {
        $('form .btn').prop('disabled', false);
        $('form .form-control').val('');
        $('#result').html('Thank you. We will contact you shortly.');
        $('.validation-summary-errors ul li').css('display', 'none');
    },
    error: function (result) {
        $('form .btn').prop('disabled', false);
        alert(result.responseText);
        //alert('An error occurred on the server. Please try again. \n\n If this keep happening, please email us at office@auroraglobal.ru');
    }
});

我可以从设置一些alert框中看到,选择的令牌肯定是错误的(在查看源代码后,我可以看到它是注销表单的值而不是提交表单)

我还尝试将data设置为

data : {token, formdata}

HTML

注销表格

<form action="/ru/Account/LogOff" class="navbar-right" id="logoutForm" method="post">
    <input name="__RequestVerificationToken" type="hidden" 
        value="FIna8PhWML3zzw2m4ZRKdB-nDx_EZ7_1iWjdb6UUHZBsPG4RxrV4YXX5j56Qmd7Gs-UrCnoRZd-IM9MCx-fhvf9fKf4BZf0pUheuaJlI1_sVgT7L-nSCv8dOecmg5XeuQaZqXFYyUagZujIa_J1vzA2" />                    
        <ul class="nav navbar-nav navbar-right">
            <li><a href="/ru/Manage" title="Manage">Здравствуйте skotze !</a></li>
                    <li><a href="/ru/Lead" id="leadsLink">возможности</a></li>
                    <li><a href="/ru/Organisation" id="leadsLink">организации</a></li>
                    <li><a href="/ru/Admin">админ</a></li>

            <li><a href="javascript:document.getElementById('logoutForm').submit()">выйти</a></li>
        </ul>
</form> 

提交表单(这是我试图用bove jquery获取的令牌)

<form action="/ru/Lead/Create" enctype="multipart/form-data" method="post"><input name="__RequestVerificationToken" type="hidden" value="XWPLVZr1NRi41XvWg5OtrHzDcVzwcACktMbK6ygtbHwjRhnWIGWmeeKGlqhOQA5gag4dFCkOujeDjfjsW6U3E-WEnnJ85QbU7RrR02ltRnJWu6V-QnLUX5fAXCpBMmyk47NpSnUvDIkphUNDI-Ocgw2" />    <div class="form-horizontal container-fluid">
        <h4>Новый запрос</h4>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить местонахождение" id="Location" name="Location" placeholder="местонахождение" type="text" value="" />
                <span class="glyphicon glyphicon-map-marker form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить организация" id="OrganisationName" name="OrganisationName" placeholder="организация" type="text" value="" />
                <span class="glyphicon glyphicon-home form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить Контактное лицо" id="ContactName" name="ContactName" placeholder="Контактное лицо" type="text" value="" />
                <span class="glyphicon glyphicon-user form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <input class="form-control text-box single-line" data-val="true" data-val-regex="Введите действительный номер телефона." data-val-regex-pattern="^(?!0+$)(\+\d{1,3}[- ]?)?(?!0+$)\d{10,15}$" data-val-required="Необходимо заполнить Телефон" id="Telephone" name="Telephone" placeholder="Телефон" type="text" value="" />
                <span class="glyphicon glyphicon-phone-alt form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <input class="form-control text-box single-line" data-val="true" data-val-email="Пожалуйста, введите действительный адрес электронной почты" data-val-required="Необходимо заполнить Email" id="Email" name="Email" placeholder="Email" type="email" value="" />
                <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group has-feedback">
            <div class="col-xs-12">
                <textarea class="form-control" cols="20" data-val="true" data-val-required="Необходимо заполнить Детали" id="Details" name="Details" placeholder="Детали" rows="2">
</textarea>
                <span class="glyphicon glyphicon-option-horizontal form-control-feedback"></span>
            </div>
        </div>


        <div class="form-group has-feedback">
            <div class="col-xs-5">
                <label class="btn btn-default btn-file">
                    Файл <input id="fileInput" type="file" style="display: none;" name="Files" multiple="multiple"
                                                                      data-textbox="#fileUploadCount" data-singlemsg="1 выбранный файл"
                                                                      data-multimsg="Выбрано {0} файла">
                </label>
            </div>
            <div class="col-xs-7">
                <input id="fileUploadCount" type="text" class="form-control" readonly="readonly"
                       placeholder="вы можете выбрать несколько файлов" onclick="$('#fileInput').trigger('click');" />
                <span class="glyphicon glyphicon-file form-control-feedback"></span>
            </div>
        </div>

        <div class="form-group">
            <div class="col-xs-offset-2 col-xs-10">
                <input type="submit" value=Отправить class="btn btn-default pull-right" />
            </div>
        </div>

        <div class="col-xs-12">
            <div class="validation-summary-valid text-danger" data-valmsg-summary="true"><ul><li style="display:none"></li>
</ul></div>
            <divi id="result" class="text-success"></divi>
        </div>
    </div>
</form>

0 个答案:

没有答案
相关问题