2012-04-03 48 views
3

我有一个模型,具有url属性。 当我使用“保存”方法保存模型时,它正在向服务器发送请求。 如果通信成功,则会触发success()方法,如果通信失败,则会触发“错误”功能。 但是,如果没有通信问题,但是当服务器由于某些服务器验证或其他原因而发送“失败消息”时会怎么样? 由于服务器端验证(或其他),模型未保存在服务器中。 因此,它也不应该保存在骨干模型中。 我应该怎么做,告诉模型不是当服务器发送“错误更新数据库”保存并告诉它保存当我收到“成功更新” 我从服务器发送如下回应:骨干 - 我们的模型如何知道服务器是否使用PHP发送“错误消息”

$this->response(
     array(
      'model'=>$model, 
      'status'=>$status, 
      'metamodel'=>array(), 
      'message'=>$msg (either success or fail)(my custom message) 
      ) 
     ); 

在客户端,我正在像这样保存。

 model.save(attr{ 
      success:(model,res)-> 
      // to do when communication success 
      error:(model,res)-> 
      //to do when communication fails 
     }) 

那么,如何根据消息或状态来检查服务器是否成功? 而且,我怎么能电话模式不保存或服务器时说恢复的变更“不”(NOT内部服务器错误,bcoz验证或其他原因,我的自定义错误)

而且,我该如何使用Backbone.Sync方法(请与我的代码相关的实际例子) 它有什么作用? (请明确指出通信问题还是自定义错误消息还是内部服务器错误)

我可以在“成功”方法中访问“状态”和“消息”,但是如何使用它们还原对模型的更改。 谢谢

+0

如果您的后端设置为处理REST请求,则不需要更改主干的同步方法。它应该开箱即用。要处理错误,您应该在错误时发送正确的HTTP代码,而不是默认的200.如果你这样做,它应该调用错误处理程序。我从来没有使用过CodeIgniter,但我确信在响应中可以更改为http代码。 – Gohn67 2012-04-03 13:14:04

+0

如何发送错误的HTTP代码?你的状态信息是什么? – user1305989 2012-04-03 13:18:58

+0

下面是Backbone手册所说的链接:http://documentcloud.github.com/backbone/#Model-save。阅读保存的部分。它说返回一个“非200 HTTP响应代码”来调用错误代码。 – Gohn67 2012-04-03 13:28:14

回答

相关问题