0

嗨,我对 ajax/jquery 很陌生,我有一个问题。我通过 AJAX 通过表单向 php 代码发送数据,但一些隐藏的输入字段是数组。我如何*强文本* 创建一个从帖子中捕获数据并保存在 vars 中以提供给 php 脚本的函数?我遵循并修改了这个例子:

//Funzione per la gestione asincrona AJAX
function xmlhttpPost(strURL) {
//Inizializzo l'oggetto xmlHttpReq
var xmlHttpReq = false;
var self = this;
// qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare.
// Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server.
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP
//che rappresenta la classe di riferimento per questo browser
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
//Apro il canale di connessione per regolare il tipo di richiesta.
//Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync)
self.xmlHttpReq.open('POST', strURL, true);

//setto l'header dell'oggetto
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

/* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/
self.xmlHttpReq.send(recuperaValore());

/* Valuto lo stato della richiesta */
self.xmlHttpReq.onreadystatechange = function() {

/*Gli stai di una richiesta possono essere 5
* 0 - UNINITIALIZED
* 1 - LOADING
* 2 - LOADED
* 3 - INTERACTIVE
* 4 - COMPLETE*/

//Se lo stato è completo
if (self.xmlHttpReq.readyState == 4) {
/* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
aggiornaPagina(self.xmlHttpReq.responseText);
}
}

}

// HERE IS THE PROBLEM. I TRIED TO INSERT MANY VAR THAT COMES FROM FORM:  id_p_vis (ARRAY), id_p_home (ARRAY), id, id_sub, data_gg, n_gg and I need to give to a php file where I will use by $_POST['id'], .....

/*Questa funzione recupera i dati dal form.*/
function recuperaValore() {
var form = document.forms['form'];
var id_p_vis = form.getElementById["idpvis"];
var id_p_home = form.getElementById["idphome"]; 
var id = form.id.value;
var id_sub = form.id_sub.value;
var data_gg = form.data_gg.sub.value;
var n_gg = form.n_gg.value; 

valore = 'id=' + escape(id);


return valore;
}
/*Questa funzione viene richiamata dall'oggetto xmlHttpReq per l'aggiornamento asincrono dell'elemento risultato*/
function aggiornaPagina(stringa){
document.getElementById("span12").innerHTML = stringa;

你能帮我解决这个问题吗?

谢谢你,再见

尼克}

4

2 回答 2

1

您可能想看看 jQueryserialize()serializeArray().

于 2012-09-27T17:42:20.393 回答
1

如果你使用 jQuery,你绝对应该切换到 jQuery 的 ajax 函数。

您还可以一次性从表单中获取所有字段:

$('form').submit(function() {
  // serialize all form fields
  var data = $(this).serialize();

  // use jQuery ajax
  $.ajax({
      type: 'POST',
      url: strURL,
      data: data
    })
    .done(function(returned_data) {
      console.log(returned_data);
    });
});
于 2012-09-27T17:43:25.673 回答