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