2009-10-07 8 views
7

ho un po 'di JQuery che utilizza Ajax per inviare informazioni al mio controller per essere elaboratiMVC e JQuery: Best pratice per il recupero dei dati del modulo

sto facendo in questo modo:

//Define my controls 
<%=Html.TextBox("PName", Model.PName, new { id = "pName" })%> ... 
.... 
.... 

//Get the values from my controls 
var param1= $("#pName").val(); 
.... 
.... 

    //Define the return URL. Is this how to send info back? 
    var url = '<%= Url.Content("~/Port/SaveRowAjax") %>/?ID=' + id 
       + "&param1=" + param1 
       + "&param2=" + param2 
       + "&param3=" + param3 
       + "&param4=" + param4 
       + "&param5=" + param5; 

    $.ajax({ 
     url: url, 
     success: function(html) { 
      alert("Success!"); 
     }, 
    }); 

    //My c# code, that processes the request 
    public void SaveRowAjax(string param1 ....) 
    { 
     ... 
    } 

È questo il modo migliore di farlo con MVC?
sembra un po 'disordinato quando sto contructing l'URL per inviare al server

risposta

2

Si può provare a utilizzare tale sintassi con jQuery

$.post(link, {param1: param1, param2: param2 }); 
0

Theres alcuni modi per farlo. Io preferisco il metodo descritto qui:

http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

Sì, si basa su una versione precedente del MVC ma la vera carne della tecnica è l'uso di jQuery (che eccedente cambiato).

Una limitazione della tecnica è che non funziona con i caricamenti di file, tuttavia, esiste un plug-in jQuery per creare post di moduli Ajax che supportano i caricamenti di file (penso attraverso un iframe nascosto).

modifica: Penso che la ragione migliore per utilizzare questa tecnica è che se l'utente ha disabilitato JavaScript, il modulo continuerà a funzionare.

4

Provare a utilizzare SerializeArray per inviare gli elementi del modulo. Riquadro tutti i loro valori in un oggetto JSON.

var link = "/Port/SaveRowAjax"; 
var formData = $(":input").serializeArray(); 
$.post(link,formData); 
+0

Questo funziona bene anche - http://www.bram.us/2008/10/27/jqueryserializeanything-serialize-anything-and -not-just-forms/ –

+0

Interessante. Lo terro 'a mente. – statenjason

1

Il modo in cui funziona per me è questo:

jQuery.ajax({ 
     url: '@Url.Action("SaveRowAjax", "Port")', 
     type: 'POST', 
     contentType: 'application/json', 
     data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }), 
     success: function (result) { } 
    }); 
Problemi correlati