【问题标题】:Ember Adapter Receive Data via Ajax PostEmber 适配器通过 Ajax Post 接收数据
【发布时间】:2018-10-30 08:08:24
【问题描述】:

我是 Ember 的新手,这是我关于 stackoverflow 的第一个问题。我在 Ember 项目的客户端工作,我需要从 Rest Api 中提取 JSON 数据。以前我可以提取如下给出的数据:

//app\adapters\product.js

export default DS.RESTAdapter.extend({

host:"http://10.1.7.13,
pathForType(){
 return "content.php?method=list&pr1=product&pr2=all&uname=aaa&upass=1234";    }});

// app\serializers\product.js

export default DS.RESTSerializer.extend({

normalizeResponse (store, primaryModelClass, payload, id, requestType){

payload={
    products:payload
};
return this._super(store,primaryModelClass, payload, id, requestType)

} });

然后后端的 url 改变了,现在用户名和用户密码不是 url 的参数,而是作为表单数据发送。

在新表单中,列表产品的 url 是“http://10.1.7.13/content.php?method=list&pr1=product&pr2=all

虽然如果我只是使用这个 url 页面访问会给出警告,因为用户名和用户密码未定义。所以我无法访问 json 数据。

但是如果我发送如下的 ajax 发布请求

 $.ajax({

    type:"POST",

    url: "http://10.1.7.13/content.php?method=list&pr1=product&pr2=all",

    data: {
    "uname":"aaa",
    "upass":1234
    },

    success: function(response){

    console.log(response);
    }
});

我可以看到我的 JSON 数据,因为我已将用户名和密码作为表单数据提供。 我的问题是我在哪里可以调用这个 ajax 帖子以及如何加载对产品模型的响应?理想情况下,我想调用适配器并向序列化程序发送响应,然后像以前一样将其添加到我的模型中。但是我查看了适配器方法,并没有看到对我有帮助的方法。我是rest api的新手,你能告诉我我该怎么做吗?

【问题讨论】:

    标签: ajax ember.js


    【解决方案1】:

    您需要覆盖适配器的 findAll 方法,该方法用于获取多条记录。在这种情况下,您需要将 HTTP 方法从 GET 修改为 POST 以传递数据。

    我假设您使用的是 DS.RESTAdapter,所以代码是:

    import DS from "ember-data";
    
    export default DS.RESTAdapter.extend({
       host: "http://10.1.7.13",
    
       pathForType() {
         return "content.php?method=list&pr1=product&pr2=all";
       },
    
       findAll(store, type, sinceToken, snapshotRecordArray) {
         let query = this.buildQuery(snapshotRecordArray);
         let url = this.buildURL(type.modelName, null, snapshotRecordArray, 'findAll');
    
         return this.ajax(url, "POST", { data: {uname: "aaa", upass: "1234"} });
        }
     });
    

    我认为密码是您帖子中的字符串。如果您的序列化程序可以在 URL 更改之前使用数据,它应该仍然可以工作。

    当试图弄清楚需要哪些适配器自定义时,我会将 methods 的 Ember Data 源代码粘贴到自定义适配器中并逐步执行代码。学习内部结构的好方法。序列化程序修改也是如此

    最后一点,在代码中硬编码用户名和密码是不安全的。我不知道这是否只是为了举例,但想把它说出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      相关资源
      最近更新 更多