webservice调用第二次失败 - backbone.js

时间:2013-02-27 09:11:03

标签: javascript backbone.js

有点奇怪,第一次调用webservice调用,但从第二次起,我得到了这个奇怪的错误。

this.save(requestObject, {
    success: function (response) {
        callback(response.toJSON());
    },

    error: function (res, result, xhr) {

    }
});

我第一次收到回调,为什么第二次失败?以下是错误日志。

HTTP Error (org.apache.http.client.HttpResponseException): 596
    [ERROR][TiHttpClient(  478)] org.apache.http.client.HttpResponseException: 596
    [ERROR][TiHttpClient(  478)]    at ti.modules.titanium.network.TiHTTPClient$LocalResponseHandler.handleResponse(TiHTTPClient.java:240)
    [ERROR][TiHttpClient(  478)]    at ti.modules.titanium.network.TiHTTPClient$LocalResponseHandler.handleResponse(TiHTTPClient.java:199)
    [ERROR][TiHttpClient(  478)]    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
    [ERROR][TiHttpClient(  478)]    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637)
    [ERROR][TiHttpClient(  478)]    at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1217)
    [ERROR][TiHttpClient(  478)]    at java.lang.Thread.run(Thread.java:1020)
    [ERROR][V8Exception(  478)] Exception occurred at undefined:1: Uncaught SyntaxError: Unexpected token <

2 个答案:

答案 0 :(得分:1)

第一次运行save时,客户端会将哪些内容发送回服务器? POST请求或PUT请求?第二次,客户端请求更改还是相同?

这可以帮助您确定问题。 Backbone save方法委托给Backbone.sync方法,该方法决定它应该做出的请求类型。例如,使用isNew()模型方法,如果模型是新的或PUT请求(模型更新),则sync进行POST(因为必须在服务器上保存新模型)请求该模型已经存在。您可以在backbone main page.

查看有关sync方法的更多信息

您从服务器获得的错误可能正在发生,因为它不知道如何响应其中一个请求。可能值得一试。

答案 1 :(得分:0)

According to the backbone.js documention

If the model isNew, the save will be a "create" (HTTP POST), if the model already exists on the server, the save will be an "update" (HTTP PUT).

所以基本上第一个请求是POST请求,之后的所有其他请求都是PUT请求。由于看起来您的服务器端脚本正在设置处理PUT请求,您可能希望使用emulateHTTP设置,如下所示:

Backbone.emulateHTTP = true