2013-06-27 6 views
0

Я хочу отправить свою форму с помощью ajax.jquery form submit with ajax

Ниже мой код:

$("#loginForm").submit(function() { 
var url = <url>; 
$.ajax({ 
     type: "POST", 
     url: url, 
     data: $("#loginForm").serialize(), // serializes the form's elements. 
     success: function(data) 
     { 
      if(data == '0'){ 
        $("#loginErr").show(); 
        return false; 
      } 
      else if(data == '1') 
        return true; 
     } 
    }); 
    return false; 
}); 

Я хочу, чтобы моя форма будет отправлена, если Аякс ответ 1. но независимо от значения данных, форма не получает представлено. Всегда возвращается значение false. Я проверил его до другого, если условие, но выполнение не прекращено при возврате.

Как я могу отправить свою форму? Я хочу обновить свою страницу.

+5

AJAX является асинхронным кстати, вы не можете вернуть значение из успеха функции обратного вызова –

+0

Вашего ** ** URL переменного является фактической URL в вашем реальном коде, правильно? – pmandell

+0

, пожалуйста, отправьте свой код на стороне сервера ... –

ответ

1

Использование что:

$("#loginForm").submit(function (event) { 
    var url = <url> ; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     context:this, //setting context on form 
     data: $("#loginForm").serialize(), // serializes the form's elements. 
     success: function (data) { 
      if (data == '0') $("#loginErr").show();  
      else if (data == '1') this.submit();//use js submit event, not jq. We need to manually submit it now that we know its successful 
     } 
    }); 
    event.preventDefault(); //Stop the form submitting straight away 
}); 
+0

Я пробовал это, но моя страница не обновляется. –

+0

проверить, если условие if (data == '1') встречается –

+0

Да. условие встречается. –

0

Я не уверен, какие данные вы хотели бы проверить. Но если эти данные поступают из самой формы, вам нужно проверить ее перед вызовом ajax. После того, как вы сделаете почтовый вызов ajax, ваша форма уже отправлена.

$("#loginForm").submit(function(e) 
{ 

var url = <url>; 
e.preventDefault(); 
mydata = $("#loginForm").serialize(); 
//Your check here 
if(mydata == '0') 
{ 
     $("#loginErr").show(); 
     return false; 
} 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: mydata, 
    success: function(response) 
    { 
     //this is your post response processor 
    } 
}); 
return false; 
}); 
0

Как я хотел обновить свою страницу, мне нужен синхронный запрос. Установка async false решила проблему. Я могу получить значение ret вне объекта Ajax, поскольку он запрашивается синхронно.

$("#loginForm").submit(function() { 
var url = <url>; 
var ret = false; 
$.ajax({ 
     async: false, 
     type: "POST", 
     url: url, 
     data: $("#loginForm").serialize(), // serializes the form's elements. 
     success: function(data) 
     { 
      //alert(data); // show response from the php script. 
      if(data == '1') 
        ret = true; 
      else if(data == '0') 
        $("#loginErr").show(); 
     } 
    }); 
    return ret; 
});