Rest Backbone.js根据POST请求获取数据

Rest Backbone.js根据POST请求获取数据,rest,backbone.js,jax-rs,Rest,Backbone.js,Jax Rs,我是backbone.js的新手。我试图用我的服务发布数据,它会返回我的数据。我的服务是:http://192.168.1.3:8080/app/search/candidate 它将输入作为 { "skills":["c","java"] } 它会将用户列表返回给我。所以我在主干中创建了集合并尝试 我的代码是 var UserModel = Backbone.Model.extend({ }); var EntityList = Backbone.Collection.extend(

我是backbone.js的新手。我试图用我的服务发布数据,它会返回我的数据。我的服务是:http://192.168.1.3:8080/app/search/candidate 它将输入作为

{
  "skills":["c","java"]
 }
它会将用户列表返回给我。所以我在主干中创建了集合并尝试 我的代码是

var UserModel = Backbone.Model.extend({
});

var EntityList = Backbone.Collection.extend({       
        model: UserModel,
        url: `'http://192.168.1.3:8080/app/search/candidate'`

        });



 var View = Backbone.View.extend({

    el : '#mydiv',
    template : _.template($("#details").html()),
    initialize : function() {   
          var self = this;     
          this.coll = new EntityList();
         // this.coll.bind("reset", _.bind(this.render, this));
         this.coll.fetch({
         data:JSON.stringify({'skills':['c','java']}),

         type: 'POST' ,   

         success: function(){
                 //console.log(this.coll.toJSON());
                 self.render();
                 }}); 
        } ,          

    render : function() {
      // the persons will be "visible" in your template
      this.$el.html(this.template({ persons: this.coll.toJSON() }));
      return this;
    }

            });
var view = new View();
但它给了我状态代码:HTTP/1.1 415不支持的媒体类型 我在哪里失踪? 来自chrom调试器的请求的标头为

   Request URL:http://192.168.1.3:8080/app/search/candidate
Request Method:POST
Status Code:415 Unsupported Media Type
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:0
Cookie:JSESSIONID=763119F314E1485DCC8B838F4539BA78
Host:192.168.1.3:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/jobSearch.html
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/31.0.1650.63 Chrome/31.0.1650.63 Safari/537.36
Response Headersview source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:8080
Content-Length:0
Date:Mon, 17 Feb 2014 11:46:00 GMT
Server:Apache-Coyote/1.1

默认情况下,主干网请求媒体类型application/json,而您的服务器似乎无法处理这个问题。要解决这个问题,请查看emaulateJSON,默认情况下,主干网请求媒体类型application/json,而您的服务器似乎无法处理这个问题。要解决这个问题,请查看emaulateJSON

这段代码的工作原理,请参阅控制台中的请求头,如下所示:


这段代码运行正常,请参见控制台中的请求头,如下所示:


我的服务器将数据作为application/json处理。我使用postman工具对其进行了测试。工作正常是的,我确信我使用内容类型:application/json和行数据{skills:[c,java]}对它进行了测试,它工作正常我的服务器将数据作为application/json进行处理。我使用postman工具对它进行了测试。工作正常是的,我确信我使用内容类型:application/json和行数据{skills:[c,java]}测试了它,它工作正常状态代码:415不受支持的媒体类型你能设置JSFIDLE吗?是否已设置主干。emulateJSON=true;在你的申请中?如果设置了Backbone.emulateJSON=true,则在调用fetch console.logBackbone.emulateJSON之前尝试检查其值;您将得到错误,因为内容类型将是application/x-www-form-urlencoded。因此您必须设置Backbone.emulateJSON=false;现在它给出了错误:POST 415 Unsupported Media Type jquery.min.js:状态代码:415 Unsupported Media Type您可以设置JSFIDLE吗?是否已设置主干。emulateJSON=true;在你的申请中?如果设置了Backbone.emulateJSON=true,则在调用fetch console.logBackbone.emulateJSON之前尝试检查其值;您将得到错误,因为内容类型将是application/x-www-form-urlencoded。因此您必须设置Backbone.emulateJSON=false;现在它给出了一个错误:POST 415不支持的媒体类型jquery.min.js:我发现有一些奇怪的地方:你的URL应该是这样的,有额外的“?另外,我认为您不需要对POST数据进行JSON.stringify。你有没有试过通过http://192.168.1.3:8080 而不是http://localhost:8080? Chrome在这方面可能很挑剔。我发现有几点很奇怪:你的URL应该是这样的,加上额外的“?另外,我认为您不需要对POST数据进行JSON.stringify。你有没有试过通过http://192.168.1.3:8080 而不是http://localhost:8080? Chrome可能会对这个很挑剔。
    this.coll.fetch({

        beforeSend: function (xhr) {
            xhr.setRequestHeader('Content-Type', 'application/json');
        },

        data: JSON.stringify({'skills':['c','java']}),

        type: 'POST',

        success: function () {
            //console.log(this.coll.toJSON());
            self.render();
        }
    });