/ / Формирайте добавяне на стойности към URL - jquery, asp.net, asp.net-mvc, jquery-validate

Формирайте добавяне на стойности към URL - jquery, asp.net, asp.net-mvc, jquery-validate

Имам формуляр, който се изпраща от JQuery. Понякога, когато изпращането на формуляра не успее, стойностите вътре във формата автоматично се добавят като низ за заявка към URL адреса. Много съм търсил, но не мога да намеря нищо по това странно поведение. Ето пример за това, което се случва.

Има формуляр с две полета

$("#MyForm").validate({
rules: {
"UserName": {
required: true
},
"Password": {
required: true,
minlength: 8
}
},
messages: {
"UserName": {
required: "UserName is required"
},
"Password": {
required: "Password is required"
}
},


submitHandler: function () {
var userName = $("#UserName").val();
var password = $("#Password").val();
var myObject = {UserName:userName, Password: password}
$.post("/MyAuthenticationUrl",myObject,function(){
//Redirect to Home page on success
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm" action="/MyUrl"/>
<input type="text" id="UserName" />
<input type="password" id="Password"/>
<input type="submit" id="Submit"/>
<form>

За валидиране и изпращане на формуляр използвам приставката JqueryValidation от JqueryValidation.org

Понякога, когато щракнете върху изпрати, потребителското име и паролата се добавят към заявката.

Така че, ако имате URL адрес като http://localhost/Home/Index става http://localhost/Home/Index/?UserName=blah&Password=blah

Подозирам, че трябва да направи нещо с приставката JqueryValidation, но не успях да намеря нещо, свързано в страницата с проблеми тук

Отговори:

1 за отговор № 1

Явно нямате приставката jQuery Validate правилно включена и инициализирана (не е в вашата ОП), така че просто изпращате формата до URL адреса в action атрибут.

Отчетеният проблем описва поведението по подразбиране на формуляра (не-ajax), изпратен, когато нямате method="post" атрибут в рамките на form tag ... низ за заявка се добавя към URL адреса по подразбиране.

Това няма нищо общо с приставката jQuery Validate.


Що се отнася до това ...

submitHandler: function () {
var userName = $("#UserName").val();
var password = $("#Password").val();
var myObject = {UserName:userName, Password: password}
$.post("/MyAuthenticationUrl",myObject,function(){
//Redirect to Home page on success
});
}

Най- submitHandler не влиза в игра, тъй като плъгинът е счупен (не е включен, грешка в JavaScript и т.н.). Изглежда обаче вашето намерение е да използвате ajax .post() да изпратите формуляра и "Redirect to Home page on success", Не разбирам смисъла на това. Ако искате да пренасочите към друг URL адрес, тогава не се нуждаете от ajax ... просто използвайте URL адреса на action атрибут и формулярът автоматично ще изпраща и пренасочва към този URL адрес. Изваждайки submitHandler изцяло ще се върне към това поведение по подразбиране.

Вашата маркировка ...

<input type="text" id="UserName" />
<input type="password" id="Password"/>

За да използвате приставката jQuery Validate, вие ТРЯБВА ДА има name атрибут във всяко поле, считано за валидиране.

<input type="text" name="UserName" id="UserName" />
<input type="password" name="Password" id="Password"/>

Няма изключение или решение за това; е как приставката вътрешно следи различните елементи.


И накрая, вашият въпрос е маркиран с и , В ASP, jQuery Validate плъгин се инициализира автоматично от включения ненатрапчив валидационен плъгин. Ако това е така, тогава не можете да се обадите на .validate() метод директно, тъй като приставката за ненатрапчиво валидиране автоматично конструира и извиква .validate() въз основа на атрибутите на данните в HTML маркирането. Приставката jQuery Validate ще използва само първата инстанция на .validate() и напълно игнорирайте всички последващи обаждания.

Премахнете обаждането си до .validate() за да потвърди това. Ако нищо не се промени, тогава ще знаете, че или той е бил прекалено задвижван от вградената ненатрапчива валидация на ASP или че на първо място е бил напълно счупен.