[英]Backbone.js: Save Method Always Return Error Callback
我知道人们可能会真的很困惑为什么我不使用rails但我觉得使用php更好,所以我选择了它。 我基本上试图创建一个非常简单的backbone.js 。 我已经预定了urlRoot和url函数。 我编写了PHP只是简单地给我一个消息(使用echo )。
但无论我做什么,每当我尝试接收响应时,它总是落入错误回调。 我确实得到了响应的responseText,但是我仍然无法理解为什么会触发错误回调。 这是我的完整的HTML和后端PHP代码。 为什么总是会出现错误回调? 我还要声明我收到标题
HTTP/1.1 200 OK
HTML (内置Backbone.js);
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
</head>
<body>
<div id='place'>
<input id='clicker' type='button' value='Click Me'/>
</div>
<script type='text/javascript'>
(function($){
Backbone.emulateHTTP=true;
Backbone.emulateJSON=true;
var URL=Backbone.Model.extend({
initialize:function(){
console.log("URL object has been created");
},
defaults:{
url:'not actually defined'
},
urlRoot:'/StupidExample/server.php',
url:function(){
var base=this.urlRoot || (this.collection && this.collection.url) || "/";
if(this.isNew()) return base;
return base+"?id="+encodeURIComponent(this.id);
}
});
var URLView=Backbone.View.extend({
initialize:function(){
console.log('URL View has been created');
},
el:('#place'),
events:{
"click #clicker":"alerter"
},
alerter:function(){
console.log("I've been clicked");
var obj=new URL();
obj.save(obj.toJSON,{
success:function(){
console.log("Success")
},
error:function(model,response,xhr){
console.log(model);
console.log(response);
console.log(xhr);
console.log("Error");
}
});
}
});
var urlView=new URLView();
})(jQuery);
</script>
</body>
</html>
PHP;
<?php
echo "I've received something";
?>
您必须使用HTTP 200
响应返回有效的JSON对象。 Backbone会在echo
返回值上抛出一个错误,因为它试图将响应解析为JSON,但失败了。
正如Derick所说,你需要返回JSON,你可以通过将你的php文件更改为:
<?php print json_encode(array( 'response' => 'success' ));
但是您还需要不使用绝对路径作为您的URL,因为不允许跨域使用AJAX,因此它必须是相对的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.