Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为backbone.js设置内容类型和帖子?_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何为backbone.js设置内容类型和帖子?

Javascript 如何为backbone.js设置内容类型和帖子?,javascript,backbone.js,Javascript,Backbone.js,我可以在backbone.js中设置内容类型和POST this.save(data, { success: function (user) { callback(user.get('LoginStatus')) }, error: function (user, result, xhr) { } }); 当我尝试拨打REST服务电话时,收到了错误的请求,它在fiddler中工作。我们需要设置类型和内容类型吗 这是我得到的错误 [ERROR]

我可以在backbone.js中设置
内容类型
POST

this.save(data, {
    success: function (user) {
        callback(user.get('LoginStatus'))
    },

    error: function (user, result, xhr) {

    }
});
当我尝试拨打REST服务电话时,收到了错误的请求,它在fiddler中工作。我们需要设置类型和内容类型吗

这是我得到的错误

[ERROR][TiHttpClient(  636)] (TiHttpClient-1) [13340,13340] HTTP Error (org.apache.http.client.HttpResponseException): Bad Request
[ERROR][TiHttpClient(  636)] org.apache.http.client.HttpResponseException: Bad Request
[ERROR][TiHttpClient(  636)]    at ti.modules.titanium.network.TiHTTPClient$LocalResponseHandler.handleResponse(TiHTTPClient.java:240)
[ERROR][TiHttpClient(  636)]    at ti.modules.titanium.network.TiHTTPClient$LocalResponseHandler.handleResponse(TiHTTPClient.java:199)
[ERROR][TiHttpClient(  636)]    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
[ERROR][TiHttpClient(  636)]    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637)
[ERROR][TiHttpClient(  636)]    at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1217)
[ERROR][TiHttpClient(  636)]    at java.lang.Thread.run(Thread.java:1020)
[ERROR][TiAPI   (  636)]  [REST API] ERROR: " *** FaultException : Object reference not set to an instance of an object."
[ERROR][TiAPI   (  636)]  [REST API] apiCall ERROR: " *** FaultException : Object reference not set to an instance of an object."

我不太理解发布的错误,但如果您只想在调用中设置内容类型或更改一些其他默认设置,那么这是完全可能的

如果查看主干中模型原型的save函数,它实际上使用this.sync或默认的“Backbone.sync”方法进行调用。通过检查Backbone.sync函数,您可以看到它实际上使用jquery的“ajax”方法进行调用。注释行 返回$.ajax(u.extend(参数,选项)); 因此,您应该能够将jquery的ajax方法将采用的任何内容作为选项传递给它。在相同的同步方法中,您还可以看到它如何设置标准的默认内容类型params.contentType='application/json'


您还可以为模型编写自己的同步方法,并通过更改默认参数进行自己的ajax调用。如果您的模型有自己的同步方法,那么将调用它而不是默认的Backbone.sync方法。

作为主干
fetch
save
方法包装
jQuery.ajax()
函数,您可以通过传入a
jQuery.ajax()在主干中设置内容类型和请求方法
设置
对象直接指向
获取
保存
功能

例如,使用
fetch
功能:

myModel.fetch({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    data: JSON.stringify(myObject),
    type: "POST",
    contentType: "application/json"
});
使用
save
功能也一样:

myModel.fetch({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    data: JSON.stringify(myObject),
    type: "POST",
    contentType: "application/json"
});
我还注意到您在
保存
函数中提供了一个数据属性。如果要将JSON作为发布的数据传递到URL,则在
save
函数中需要以下语法:

myModel.fetch({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    type: "POST",
    contentType: "application/json"
});
myModel.save({
    data: JSON.stringify(myObject),
    type: "POST",
    contentType: "application/json"
});

请求失败的原因是什么?状态代码,正文输出?@ChuckE:异常已更新。哪个url响应REST请求?您能否确认您正在使用现有资源?