2015-09-24 16 views
5

so come passare alcuni parametri a un metodo di callback JQuery $ GetJSON, thanks to this question:

$.getJSON('/website/json', 
{ 
    action: "read", 
    record: "1" 
}, 
function(data) { 
    // do something 
}); 

e posso anche inviare un modulo a un metodo di callback $ GetJSON:

$.getJSON('/website/json', $(formName) 
function(data) { 
    // do something 
}); 

Ma Voglio passare alcuni parametri E inviare alcuni elementi del modulo. Come posso unire le due cose insieme?

potevo serializzare gli elementi del modulo e aggiungere manualmente alcuni parametri all'URL, e sembra che funziona:

$.getJSON('/website/json', 
    'action=read&record=1&' 
    + $(formName).serialize(), 
function(data) { 
    // do something 
}); 

Ma non sembra molto elegante. È questo il modo giusto, o c'è un modo migliore per farlo?

+0

È possibile passare come loro: '$ GetJSON ('/ sito web/JSON', {azione: "leggere", record di: 1, ..}.' - non so cosa altro può fare ya – tymeJV

+0

perché non solo i parametri che vuoi passare fanno parte dell'elemento form, magari come elementi di input nascosti? –

risposta

2

Potremmo implementare la funzionalità demonstrated in this answer come jQuery metodo campione personale che produce un oggetto di coppie chiave/valore da un formulario e lo combina con le proprietà che non sono derivati ​​dalla forma:

$.fn.formObject = function (obj) { 
    obj = obj || {}; 
    $.each(this.serializeArray(), function (_, kv) { 
     obj[kv.name] = kv.value; 
    }); 
    return obj; 
}; 

$.getJSON('/website/json', $(formName).formObject({ 
    action: "read", 
    record: "1" 
}), function(data) { 
    // do something 
}); 
+1

Ho dovuto aggiungere un 'return obj;' dopo '$ .each' e funziona. Soluzione interessante – fthiella

0

Crea un post Ajax per inviare i dati al server. Recupera i dati dei parametri nel codice back-end insieme ai dati del modulo.

var formData = {data from form}; 

formData.action = 'read'; 
formData.post = '1'; 

$.ajax({ 
    url: '/website/json', 
    type: "post", 
    data: formData 
}).done(function (data) { 
    // remove prior values set upon request response 

    formData.action = null; 
    formData.post = null; 
}); 
+0

Cosa è' { dati dal modulo} '? Questo non è un JavaScript legale – sdgluck

+0

@sdgluck è come un segnaposto," metti qui il selettore che vuoi ", testerò presto entrambe le risposte e ti darò un feedback .. grazie:) – fthiella

+0

@deek Mi piace questo approccio, ma non riesco a farlo funzionare. Il post ajax va bene, ma "action" e "post" non sembrano essere inviati al server. Sto facendo qualcosa di sbagliato? – fthiella

Problemi correlati