Ho provato a semplificare il mio problema, ma penso che sia meglio che descrivo brevemente il mio script:
1. la mia pagina index.html contiene un div:
codice:
<div id='mydiv'></div>
2. con $.getJSON ottengo l'html per #mydiv:
codice:
qs = "json.php";
$.getJSON(qs, function(json) {
$("#mydiv").html(json.body);
});
I dati ottenuti con JSON sono l'html che contiene il form #myform:
codice:
<form id='myform' action='json.php?a=mod' method='post'>
h = <input type='text' id='h' name='h' size='30' value=''/>
<input type='submit' value='modifica' />
</form>
3. Fatto ciò, vorrei usare il plugin jquery.form.js per inviare una richiesta ajax con #myform:
codice:
var options = {
dataType: 'json',
beforeSubmit: sewt_validate,
success: sewt_success
};
$('#myform').ajaxForm(options);
e le funzioni sewt_validate e sewt_success sono (copiate del sito del plugin):
codice:
function sewt_validate(formData, jqForm, options) {
for (var i=0; i < formData.length; i++) {
if (!formData[i].value) {
alert('Please enter a value for all fields');
return false;
}
}
alert('All fields contain values.');
}
function sewt_success(data, status) {
if(status == 'success') {
$("#mydiv").html(data.body);
}
}
Adessp la richiesta ajax non funziona. penso sia perchè jquery non vede #myform e io non posso farne il bind ($('#myform').ajaxForm(options);).
Quando clicco su 'modifica', la pagina json.php si apre direttamente con la risposta corretta, ma io vorrei che fosse una richiesta ajax per ottenere l'html da mettere ancora nel #mydiv