如何使用jQuery的ajax方法将json数组发布到PHP?

时间:2013-11-18 17:51:40

标签: javascript php jquery ajax json

我有一个由javascript创建的json数组,需要将其发布到php文件中,以便将数据保存到数据库中。

var myArray = [{
                "picture":"picture1.jpg",
                "picture_comment":"some comment about picture1", 
                "pictureid":16, 
                "u0id":80, 
                "u1id":82,
                "u2id":78,
                "u3id":79,
                "u4id":81, 
                "param0": "60f3f",
                "param1":"48dd2",
                "param2":"4f2f7",
                "param3":"8d101",
                "param4":"5efcc",
                "active":false,
                "dutyid":1256,
                "t":0
               },
               {
                "picture":"picture2.jpg",
                "picture_comment":"some comment about picture2",
                "pictureid":160,
                "u0id":18,
                "u1id":48,
                "u2id":70,
                "u3id":95,
                "u4id":74,
                "param0": "1123f",
                "param1":"48d13",
                "param2":"595f7",
                "param3":"78ad8",
                "param4":"4efdc",
                "active":false,
                "dutyid":125,
                "t":4
               }
               //goes like this about more than 20 times.
       ;           

我试图使用jQuery.ajax发布它,但我没有成功。

 $.ajax({
          type: "POST",
          url: "goDoMyWork.php",
          data: myArray,
                      dataType: "json",
          success: function(){

            alert("Done! You'll be redirecting now.");
            window.location.href = "/index.php";
        }
        ,
        error: function(jqXHR, textStatus, errorThrown)
        {
            alert("Fail!");
        }
    });

我必须将一些数据插入一个表中,并将其中一些数据插入另一个表中。

我使用以下错误:

alert(jqXHR + '-' + textStatus + '-' + errorThrown);
  
    

[object Object] -parsererror-SyntaxError:JSON.parse:意外字符

  

2 个答案:

答案 0 :(得分:2)

尝试将data: myArray更改为data: {mydata : myArray}。直接传递数组会导致jQuery以奇数格式传递它。 http://api.jquery.com/jQuery.param/

答案 1 :(得分:1)

JSON.parse是将json格式的文本转换为JavaScript对象的函数。你似乎想要做的是在服务器上抛出一些数据,服务器将在那里进一步处理它。

您实际执行的操作是将dataType设置为json。在documentation中,您可以读到这是您希望从服务器返回的数据类型。因此,jQuery会通过JSON.parse抛出从服务器返回的数据,但显然数据不是格式良好的json-string。从您的请求中删除dataType将解决此问题,因为很可能无法解析数据。因此,返回的任何内容都将以字符串的形式出现。