2010-08-16 2 views
13

У меня есть следующий код;

 $.ajax({ 
      url: "/Home/jQueryAddComment", 
      type: "POST", 
      dataType: "json", 
      data: json, 
      contentType: 'application/json; charset=utf-8', 
      success: function(data){ 
       //var message = data.Message; 
       alert(data); 
       $('.CommentSection').html(data); 
      } 

И в моем контроллере;

[ValidateInput(false)] 
    public ActionResult jQueryAddComment(Comment comment) 
    { 
     CommentSection commentSection = new CommentSection(); 

     //ya da - ya da 
     // fill the commentsection object with data 

     //then 
     return PartialView("CommentSection", commentSection); 

    } 

Однако, когда я возвращаюсь на страницу, предупреждение об успешном завершении не происходит. Может ли кто-нибудь увидеть недостаток в этой логике?

+0

Каков текущий ответ на сообщение? Проверьте ответ с Firebug и/или Fiddler. – jfar

+0

хорошая точка @jfar – griegs

ответ

25

Ваш ожидающий JSON в .Ajax POST, но в ActionMethod ваш возврат PartialView?

Try:

$.ajax({ 
    url: "/Home/jQueryAddComment", 
    type: "POST", 
    dataType: "html", 
    data: json, 
    success: function(data){ 
     //var message = data.Message; 
     alert(data); 
     $('.CommentSection').html(data); 
    } 
} 
+0

Это хороший момент. Я вернул объект json, но тогда data.message был null – griegs

+0

Да, похоже, что вы можете просто возвращать html, и Javascript ожидает «JSON Object» ... – xandercoded

+0

Если я верну Json, а затем предупредил об этом window.alert (data) Я получаю Object. Итак, как мне теперь получить html внутри объекта. – griegs

0

Если это не был скопирован неправильно, это кажется вам не хватает некоторых закрытия маркеров.

 $.ajax({ 
     url: "/Home/jQueryAddComment", 
     type: "POST", 
     dataType: "json", 
     data: json, 
     contentType: 'application/json; charset=utf-8', 
     success: function(data){ 
      //var message = data.Message; 
      alert(data); 
      $('.CommentSection').html(data); 
      } //<-- added close for anonymous function 
     }); //<--added close/semicolon for ajax function 

Кроме того, вы используете POST, но у вашего действия нет атрибута [Post]. Когда вы запускаете это в отладчике, попадает ли точка останова на ваше действие?

+0

Извините, закрывающие жетоны верны, я просто не копировал всю функцию – griegs

+1

PostAttribute не требуется, он будет принимать все HTTP-глаголы, если их нет ... – xandercoded

+0

Имеет ли точка останова на 'jQueryAddComment 'попасть в отладчик? – jwsample

Смежные вопросы