[英]Using PHP as a Backend with Ember.js
我正在嘗試將Emberjs與PHP一起用作后端。
這是我的app.js
,
App = Ember.Application.create({});
App.IndexRoute = Ember.Route.extend({
renderTemplate : function(controller) {
this.render('MyApp', {
controller : controller
});
},
model : function() {
return App.MyTemplateModel.find();
}
});
App.IndexController = Ember.ArrayController.extend({
filteredContent : Ember.computed.oneWay("content"),
last : function() {
var lastName = App.controller.get('selectedProgrammer.last_name');
var filtered = this.get('content').filterProperty('last_name', lastName);
this.set("filteredContent", filtered);
},
refresh : function() {
var refresh = this.get('content');
this.set("filteredContent", refresh);
}
});
App.MyTemplateModel = Ember.Model.extend({
id : Ember.attr(),
last_name : Ember.attr(),
first_name : Ember.attr(),
suffix : Ember.attr(),
expiration : Ember.attr()
});
App.controller = Ember.Object.create({
selectedProgrammer : null,
content : [Ember.Object.create({
last_name : "Solow",
id : 1
}), Ember.Object.create({
last_name : "Arbogast",
id : 2
}), Ember.Object.create({
last_name : "Dorfman",
id : 3
}), Ember.Object.create({
last_name : "Eliason",
id : 4
})]
});
App.MyTemplateModel.url = "user.php";
App.MyTemplateModel.adapter = Ember.RESTAdapter.create({
ajaxSettings: function(url, get) {
return {
url: url,
type: get
};
}
});
var existing = App.MyTemplateModel.find();
App.MyTemplateModel.camelizeKeys = true;
和我的PHP代碼,
<?php
$con = mysql_connect("localhost","root","school");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("codeigniter", $con);
$id = $_GET['id'];
$query = "SELECT * FROM `user`";
$comments = mysql_query($query);
while($row = mysql_fetch_array($comments, MYSQL_ASSOC))
{
$name = $row['first_name'];
echo json_encode($name);
}
mysql_close($con);
?>
但是我正在控制台上得到它,
GET http://ember.local/user.php.json 404 (Not Found)
我可以看到它正在將.json添加到php文件中,但是為什么呢? 此外,如何解決它或如何在Ember中實現自己的Ajax調用? 此外,我在代碼中使用Ember Model。
ember-model沒有在盒子外面提供任何配置選項來更改此行為,例如,在URL的末尾添加.json
。
因此,一個可能的解決辦法是重新打開RESTAdapter
並覆蓋buildURL
功能,不包括.json
。
Ember.RESTAdapter.reopen({
buildURL: function(klass, id) {
var urlRoot = Ember.get(klass, 'url');
if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); }
if (!Ember.isEmpty(id)) {
return urlRoot + "/" + id;
} else {
return urlRoot;
}
}
});
但是,如果原始代碼發生更改,而您想更新該庫,則還不能更改覆蓋,這並不是將來的證明。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.