0

它有点奇怪,第一次调用 web 服务调用,但从第二次开始我得到这个奇怪的错误。

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 <
4

2 回答 2

1

当您第一次运行save时,客户端将什么发送回服务器?POST 请求还是 PUT 请求?第二次,客户端请求是变化还是一样?

这可以帮助您识别问题。Backbonesave方法委托给Backbone.sync决定它应该发出的请求类型的方法。例如,使用isNew()模型方法,sync如果模型是新的,则发出 POST(因为必须在服务器上保存新模型)请求,如果模型已经存在,则发出 PUT 请求(模型更新)。您可以在主干主页查看有关该sync方法的更多信息。

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

于 2013-02-27T12:27:23.823 回答
0

根据backbone.js 文档

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
于 2013-02-28T01:26:02.710 回答