将json对象保存到文件


                    

我需要将json对象保存到文件中。
因此,我正在使用另一个将数据写入文件的PHP脚本。 数据和文件名由ajax POST请求发送。</ p>

  var结果= $('结果');
var filename = $('#filename')。val();

$ .ajax({
     网址:“ jsonWriter.php”,
     输入:“ POST”,
     contentType:“ application / json; charset = utf-8”,
     dataType:“ json”,
     数据:JSON.stringify([{{data:data,filename:filename}]),
     成功:功能(数据){
         results.html(data);
     },
     错误:功能(jqXhr,textStatus,错误){
         results.html(“ <​​p class = \” error \“>错误:” + textStatus +“,” +错误+“ </ p>”));
     }
});
</ code> </ pre>

当我在Fiddler中监视请求时,它看起来不错,并且发布的数据正确。
但是,以某种方式调用了错误函数。 输出</ p>

 错误:parsererror,语法错误:JSON.parse:JSON数据后出现意外的非空白字符
</ code> </ pre>

我将Fiddler中发布的JSON数据复制到其他在线解析器中,以确保其有效。</ p>

为什么仍然调用错误函数?</ p>
     </ div>

展开原文

原文

I need to save a json object to a file. Therefore I'm using another PHP script which writes the data to a file. Data and filename are sent by an ajax POST request.

var results = $('results');
var filename = $('#filename').val();

$.ajax({
    url: 'jsonWriter.php',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify([{data: data, filename: filename }]),
    success: function(data) {
        results.html(data);
    },
    error: function(jqXhr, textStatus, error) {
        results.html("<p class=\"error\">ERROR: " + textStatus + ", " + error + "</p>");
    }
});

When I monitor the request in Fiddler, it looks fine and the posted data is correct. However, somehow the error function is invoked. It outputs

ERROR: parsererror, SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data

I copied the posted JSON data from Fiddler into different online parsers, which ensured it is valid.

Why is the error function invoked anyway?

1个回答


在我看来,您期望服务器返回文本内容,因为您正在使用 .html </ code>:</ p>

 成功:function(data){
     results.html(data);
},
</ code> </ pre>

但是,您告诉jQuery需要JSON数据:</ p>

  dataType:“ json”,
</ code> </ pre>

因此,jQuery尝试将从服务器返回的内容解析为JSON并失败。 您需要将 dataType </ code>更改为 text </ code>或 html </ code>。</ p>
     </ div>

展开原文

原文

It looks to me like you are expecting the server to return text content, since you are applying it with .html:

success: function(data) {
    results.html(data);
},

However, you are telling jQuery to expect JSON data:

dataType: "json",

jQuery is therefore attempting to parse your content returned from the server as JSON and failing. You need to change dataType to either text or html.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐