【问题标题】:How to post json array to PHP using jQuery's ajax method?如何使用 jQuery 的 ajax 方法将 json 数组发布到 PHP?
【发布时间】:2013-11-18 17:51:40
【问题描述】:

我有一个由 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: 意外字符

【问题讨论】:

  • 什么不成功?它给出了什么错误?您是否收到了 PHP 中的数据?
  • 首先,这不是一个json数组,它只是一个数组。如果您希望它是 json,则必须对其进行字符串化。其次,您收到的错误表明您的 php 没有返回 json(json 是您告诉 jquery 使用 dataType: "json" 期望的格式)

标签: javascript php jquery ajax json


【解决方案1】:

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

【讨论】:

  • 嗯,这解决了我的问题。正如@KevinB 所说,我的数组不是json。它只是字符串。我使用您的建议制作了一个 json 数组。谢谢。
【解决方案2】:

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

您实际上正在做的是将dataType 设置为json。在documentation 中,您可以看到这是您希望从服务器返回 的数据类型。因此,jQuery 将通过JSON.parse 抛出从服务器返回的数据,但显然数据不是格式正确的 json 字符串。从您的请求中删除 dataType 将解决此问题,因为数据很可能不会被解析。因此,无论返回什么都将以字符串的形式。

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多