2015-05-29 146 views
4

我想要做的是将JavaScript数组发送到PHP文件。
这是我的了:通过jQuery AJAX发送JavaScript数组POST

var mydata = []; 
     console.log(document.getElementsByTagName("input")[0].name); 
     for (var i = 0; i < document.getElementsByTagName('input').length; i++) { 
      mydata[document.getElementsByTagName("input")[i].name] = document.getElementsByTagName("input")[i].value; 
     }; 
     for (var i = 0; i < document.getElementsByTagName('select').length; i++) { 
      mydata[document.getElementsByTagName("select")[i].name] = document.getElementsByTagName("select")[i].value; 
     }; 
     console.log(mydata); 

     $.ajax({ 
      method: "POST", 
      url: "q.php", 
      data: {'lol': JSON.stringify(mydata)}, 
      contentType: 'application/json', 
      dataType: 'json' 
     }) 
     .done(function(msg) { 
      alert("Data Saved: " + msg); 
      $('#debug').html(msg); 
     }); 

因此,大家可以看到,我创建一个数组与循环,在那一刻,一切都很好。问题是,当我尝试通过POST使用JSON发送它时。我不知道这是不是最好的方法......

我尝试没有JSON.stringify();但仍$_POST

好像后没有发送,但我可以在控制台中看到XHR发送了发送请求。

+0

你说:“但同样的错误发生”。什么是错误?你能提供错误信息吗? –

+0

您看到的POST包含您需要的数据?我认为JSON.stringify是没有必要的。你得到一个响应错误或JavaScript错误? – ecarrizo

+0

**编辑** $ _POST是空的,我尝试了JSON.stringify,但它仍然是空的。 – wwwanaya

回答

3

尝试使用此代码并查看更改。

删除 contentType: 'application/json', dataType: 'json'

,并更改var mydata = []var mydata = {}

你的Ajax应该是这样的

 
     $.ajax({ 
      method: "POST", 
      url: "q.php", 
      data: {'lol': mydata} 
     }) 
     .done(function(msg) { 
      alert("Data Saved: " + msg); 
      $('#debug').html(msg); 
     }); 

你不必字符串化的MYDATA,因为你已经decleared它作为对象。

希望它有帮助