【问题标题】:executing ajax success function- jQUERY执行ajax成功函数-jQUERY
【发布时间】:2015-06-13 16:01:17
【问题描述】:

我已经四处寻找这个错误,但似乎没有任何解决方案可以帮助我解决我得到的问题。我正在执行 ajax 请求,并且正在尝试检索服务器发布的 json 输出。我可以打印出我试图捕获的 json(通过 console.log()),而不是在 jQuery.parsejson() 中处理它。我不断收到“Uncaught SyntaxError: Unexpected token o”错误。请问有人可以建议吗?

我的代码:

  // Make ajax request 
        $.ajax({
            url: 'http://localhost/multipleFileUpload_adam/webservice/delete_pdf.php',
            data: {delete_array: jsonString},
            dataType: 'json',
            type: 'POST',
            success: function(data){
              console.log(data);
                var x = jQuery.parseJSON(data);
                    },

console.log(data) 给出以下内容(我正在尝试检索 'success_deleted' 数组:

 Object {success_delete: Array[2], unsuccess_delete: Array[0], input array: Object}

如果我删除这行代码:

  var x = jQuery.parseJSON(data);

然后我可以让 console.log(data) 工作。如果我添加它,我会收到上面提到的错误。

【问题讨论】:

  • 我可能完全错过了这个问题,但你不能把x分配给data.success_delete吗?

标签: javascript jquery json


【解决方案1】:

这一行:

dataType: 'json',

告诉 jQuery 忽略服务器返回的内容类型,并始终将响应解析为 JSON。

然后:

success: function(data){

您通过解析 JSON 获得的 JavaScript 值(它是一个对象)被传递到 data

这一行:

jQuery.parseJSON(data);
  1. 取值data(一个对象)
  2. 将其转换为字符串(即"[object Object]"
  3. 尝试将该字符串解析为 JSON(事实并非如此)。

然后我可以让 console.log(data) 工作。如果我添加它,我会收到上面提到的错误。

是的。这是预期的行为。不要那样做。只需使用 data 中已解析的数据即可。

【讨论】:

  • 所以通过添加'dataType: "json"'行,我从服务器获得的json响应会自动解析为一个Javascript对象,然后放置在'data'中?
  • 如果服务器响应正确的内容类型,那么指定dataType 没有区别。如果 jQuery 认为它正在获取 JSON,则将解析 JSON 响应(转换为对象、数组、字符串、数字、布尔值或 null),并将结果作为参数传递给成功。
【解决方案2】:

有一个解析错误,因为数据已经是一个对象,所以它需要 json 并获取 Object。 'O' 是意想不到的字符。尝试不使用 parseJSON 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2014-03-07
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多