没有将我的json数组传递给php,我不知道为什么

时间:2015-05-26 14:05:53

标签: ajax json simple-html-dom

我的代码无法在浏览器中运行,也没有将数据发送到process.php。我不知道问题出在哪里。

我原来的js数据结构 - data-today.php(每日更新,我在头后打开)

var football = new Array(); football[0] = new Array('Argentina','Primera Division','Boca Juniors'); football[1] = new Array('Argentina','Primera Division','Lanús'); football[2] = new Array('England','Premier League','Arsenal'); football[3] = new Array('England','Premier League','Liverpool');

这是我的代码,我想将所有数据传递给一个简单的html dom解析器。我不知道问题出在哪里。

<html>
<head>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="json2.js">
</script>
<script src="data-today.php" type="text/javascript" language="javascript"></script>


</head>
<body>


<script language="javascript" type="text/javascript">
<!--






$(document).ready(function () {

        var json = JSON.stringify(football);
        for (var i = 0; i < json.length; i++) {



alert(json);
$.ajax ({
  type:"POST",
  url:"process.php",
  contentType: "application/json",
  dataType: "json",
  async: true,
  data: {
         country: $("json[i][0]"),
         competition: $("json[i][1]"),
         team: $("json[i][2]")},
  success: function(){ alert("data")},
  error: function(){ alert("error")}
});
            }
    });







</script>


<table>
</table>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

你在javascript数组中已经有了很好的数据,如果你真的想在for循环中发布数据,你可以使用下面的内容。

$(document).ready(function () 
{
    // scrap that line, you have the values in array (of arrays)
    //var json = JSON.stringify(football);

    for (var i = 0; i < football.length; i++) 
    {
        //alert(json);
        $.ajax ({
          type:"POST",
          url:"process.php",
          contentType: "application/json",
          dataType: "json",
          async: true,
          data: {
             country: football[i][0],
             competition: football[i][1],
             team: football[i][2],
          success: function(){ alert("data")},
          error: function(){ alert("error")}
        });
     }
});

你可能还应该将你的data-today.php重命名为data-today.js,因为它似乎是一个javascript文件而不是php文件......

答案 1 :(得分:0)

(1)var football是一个数组,所以当你执行var json = JSON.stringify(football);时它会把它变成一个字符串,所以当你执行for (var i = 0; i < json.length; i++) {时它会循环遍历字符串字符,而不是一个数组。

(2)如果json是一个数组,则无需将其作为对象 - $("json[i][0]")。只需直接访问它 - json[i][0]

所以现在你的代码看起来像

<script language="javascript" type="text/javascript">

var football = new Array(); 
football[0] = new Array('Argentina','Primera Division','Boca Juniors'); 
football[1] = new Array('Argentina','Primera Division','Lanús'); 
football[2] = new Array('England','Premier League','Arsenal'); 
football[3] = new Array('England','Premier League','Liverpool');

$(document).ready(function () {

    var json = football;
    for (var i = 0; i < json.length; i++) {

        $.ajax({
          type:"POST",
          url:"process.php",
          contentType: "application/json",
          dataType: "json",
          async: true,
          data: {
              country: json[i][0],
              competition: json[i][1],
              team: json[i][2]},
          success: function(){ alert("data")},
          error: function(){ alert("error")}
        });
    }
});

</script>

jsFiddle示例 - http://jsfiddle.net/pdrw4r73/1/(我在alert("error")中注释了error: function(){ alert("error")},但您可以展开Firebug Lite中的POST以查看$.ajax()讯息。)

答案 2 :(得分:0)

感谢大家的答案。如果我尝试更新我的代码,我在firefox控制台上遇到了这个错误:SyntaxError:expected expression,got&#39;}&#39; ,在</script>标签之前的某个地方。我尝试了两个版本,但如果我尝试打开我的process.php,结果是一样的。

我的process.php:

    <?php
include ("auto3.php");
echo "<pre>";
    print_r($_POST);
echo "</pre>";
?>