我有一个AJAX电话:
$('#testyo').click(function(){
$.ajax({
type: 'GET',
url: "../messages/drew",
dataType: 'JSON',
success:function(data){
alert(data);
},
error: function(data)
{
console.log(data);
alert("Error: "+data);
}
});
return false;
});
它应该是成功的,但我收到警报(“错误:”+数据)警报。数据是[object Object]。所以警报只是说错误:[对象对象]
在我的console.log(数据)
中 Object {readyState: 4,
getResponseHeader: function,
getAllResponseHeaders: function,
setRequestHeader: function,
overrideMimeType: function…}
abort: function ( statusText ) {always: function () {complete: function () {done: function () {error: function () {fail: function () {getAllResponseHeaders: function () {getResponseHeader: function ( key ) {overrideMimeType: function ( type ) {pipe: function ( /* fnDone, fnFail, fnProgress */ ) {progress: function () {promise: function ( obj ) {readyState: 4responseText: "drew"setRequestHeader: function ( name, value ) {arguments: nullcaller: nulllength: 2name: ""prototype: Object__proto__: function Empty() {}<function scope>state: function () {status: 200statusCode: function ( map ) {statusText: "OK"success: function () {arguments: nullcaller: nulllength: 0name: ""prototype: Object__proto__: function Empty() {}<function scope>then: function ( /* fnDone, fnFail, fnProgress */ ) {__proto__: Object
正如你所看到它确实显示了responseText:“drew”这就是我想要的。我只是想知道为什么要通过我的失败功能,而不是我的成功。如果还有什么需要帮助我解决这个问题,请告诉我。
答案 0 :(得分:1)
根据jquery文档,error参数将三个输入作为参数:
错误:
Type: Function( jqXHR jqXHR, String textStatus, String errorThrown )
请求失败时要调用的函数。该功能收到 三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,a 描述发生的错误类型的字符串和可选项 异常对象,如果发生了一个。第二个可能的值 参数(除了null)是&#34;超时&#34;,&#34;错误&#34;,&#34;中止&#34;和 &#34; parsererror&#34 ;.发生HTTP错误时,errorThrown会收到 HTTP状态的文本部分,例如&#34; Not Found&#34;或&#34;内部 服务器错误。&#34;
如果您修改错误函数以获取三个参数输入并访问第二个参数以了解错误字符串是什么,则可以查看错误消息和错误。
如果这样做,很容易发现错误并知道请求失败的原因。一旦发现错误,就很容易解决它。
unexpected token
可能意味着您从服务器获得了损坏的JSON响应。还要确保服务器组件发送的响应是JSON类型。
在服务器中设置响应类型,例如,如果响应为json:
response.setContentType("application/json");
另见:
答案 1 :(得分:0)
我看到你得到200响应,但可能你的服务器为json返回了错误的内容类型,或者它是完全无效的json。
在使用firebug或chrome的Firefox中,尝试检查内容类型等响应和响应标头。
答案 2 :(得分:0)
当您的responseText
返回“画了”时,您的回复不是JSON,而是字符串。删除dataType: 'JSON'
,jQuery将使用自动检测。然后将调用success
函数。
JSON应该类似于{"myText": "drew"}
。