2013-11-01 73 views
0

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

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>"); 
    } 
}); 

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

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

我将发布的来自Fiddler的JSON数据复制到不同的在线解析器中,这确保了它的有效性。

为什么调用错误函数呢?

+0

而你的PHP脚本实际上是否返回有效的JSON?它似乎并不像它那样。发布PHP代码。 “dataType”选项设置预期将**返回**的数据类型,但未发送! – adeneo

+0

提供样本数据,特别是它的开始和结束。 – SergeyB

+1

[JQuey/Json Error“SyntaxError:JSON.parse:unexpected character”]的可能重复(http://stackoverflow.com/questions/16967289/jquey-json-error-syntaxerror-json-parse-unexpected-character) – moonwave99

回答

1

它看起来像你对我期待服务器返回的文本内容,因为你是用.html应用它:

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

但是,你告诉jQuery的期望JSON数据:

dataType: "json", 

因此,jQuery试图解析从服务器返回的内容为JSON并失败。您需要将dataType更改为texthtml