2010-08-22 2 views
2

Я пытаюсь отправить сообщение в действие MVC и отобразить полученный JSON на веб-странице. Действие получает команду post, но результат отображается на новой странице, а не на той же странице. Например, он спросит, хочу ли я загрузить или открыть файл. PS. Я также использую проверку jQuery.MVC Post Json Error

мой JQuery:

submitHandler: function(form) { 
        $('#loading').show(); //adds waiting spinner 
        $.post(
         $(form).attr('action'), 
         form.serialize(), 
         function(data) { 
          alert(data); 
         }, 
         "json" 
        ); 
        return false; 
       } 

Мои действия:

[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken] 
public ActionResult ContactUs(FormCollection collection) { 
    ... 
    return Json("OK"); 
} 

Я стучал головой об этом и прочитал слишком много веб-поиска, но все еще не дало никаких результатов. Любая помощь будет принята с благодарностью.

ответ

1

Я бы порекомендовал вам с помощью jquery form plugin, который позволяет это сделать:

submitHandler: function(form) { 
    $('#loading').show(); //adds waiting spinner 
    $(form).ajaxSubmit(); 
} 

Вы также можете передать параметры ajaxSubmit метода:

$(form).ajaxSubmit({ 
    success: function(data) { 
     alert(data); 
    } 
}); 

Если вы не хотите использовать любые другие плагины убедитесь, что вы это сделали (обратите внимание, что form обернут в $(), чтобы позвонить по методу serialize):

$.post(
    form.action, 
    $(form).serialize(), 
    function(data) { 
     alert(data); 
    }, 
    'json' 
); 
0

вы можете проверить это в действии

[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken] 
public ActionResult ContactUs(FormCollection collection) { 
... 
return new JsonResult() { data = "OK"}; 
} 
0

Так же, как решение @Akyegane, но я хотел бы сделать это

[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken] 
public ActionResult ContactUs(FormCollection collection) { 
    return Json({ data = "OK"}); 
} 
0

Спасибо, я просматривал JQuery проверки сайта и говорит попробуйте что-то вроде этого:

  submitHandler: function(form) { 
       $(form).ajaxSubmit(); 
     } 

Я сделал и это вроде как работы. Форма передает правильно, но я получаю эту ошибку в FireBug:

$ (форма) .ajaxSubmit не является функция

Я гугл кучи сайтов, и нет никакого решения. Должен ли я использовать плагин jquery form вместо проверки jquery? Я использую последние jquery и Jquery для проверки пакетов CDN через:

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 
http://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js