2009-07-31 19 views
2

In Javascript Ich habe folgendes:

$.ajax({ 
     url: "/ajax/test", 
     type: "POST", 
     dataType: "html", 
     data: '{"keyword" : "' + $('#tbxBrand').val() + '", "projectguid" : "<%= thisProject.ProjectGuid.ToString() %>", "userguid" : "<%= thisUser.UserGuid.ToString() %>"}', 
     beforeSend: function() { }, 
     success: function(data) { 
      alert(data); 
     } 
    }); 

Im Controller habe ich:

public ActionResult Test() 
    { 
     string keyword = Request.Form["keyword"]; 
     return new JsonResult { Data = keyword }; 
    } 

jedoch die Request.Form tut nicht die richtigen Schlüssel enthalten. In der Tat kommt die Request.Form, wie die scheint falsch:

Request.Form = {%7b%22keyword%22+%3a+%22data%22%2c+%22projectguid%22+%3a+%22cedce659-fd91-46c8-8f69-e527a38cffc2%22%2c+%22userguid%22+%3a+%2252ff20ab-cdf1-4dae-b539-645b6bf461a7%22%7d} 

ich nicht herausfinden kann, was hier nicht stimmt. Kann jemand helfen?

Danke!

Antwort

2

Zitieren Sie die Daten nicht. Ein Objekt wird in eine Abfragezeichenfolge konvertiert. Wenn Sie eine Zeichenfolge verwenden, muss sie im Abfragezeichenfolgenformat vorliegen. Außerdem finde ich es besser, einzelne Anführungszeichen um die Tags herum zu verwenden. Dadurch können Sie bei Bedarf innerhalb der Tags doppelte Anführungszeichen verwenden.

$.ajax({ 
    url: "/ajax/test", 
    type: "POST", 
    dataType: "html", 
    data: { 
      "keyword" : $('#tbxBrand').val(), 
      "projectguid" : '<%= thisProject.ProjectGuid.ToString() %>', 
      "userguid" : '<%= thisUser.UserGuid.ToString() %>' 
      }, 
    beforeSend: function() { }, 
    success: function(data) { 
     alert(data); 
    } 
}); 
2

Ich benutze dies;

function postComment(id) { 
    var commentText = jQuery.trim($("#textbox" + id.toString()).val()); 

    $.post("/jQueryTests/jQueryAddMessageComment", { commentText: commentText }, function(newComment) { 
     $("#divComments" + id.toString()).html(newComment); 
    }); 
} 

dann in C#

 public ActionResult jQueryAddMessageComment(string commentText) 
    { 
     //postComment 
     return PartialView("commentList", new FormViewModel { LastComment = commentText }); 
    } 

Ich benutze Request.Form nicht, da die Daten als Parameter an Ihrer C# Methode übergeben werden sollen.