Backbone.js如何使用PHP

bre*_*njt 18 javascript php backbone.js

我一直在研究backbone.js,我似乎无法弄清楚如何让它与php通信以保存模型数据.它发送请求,但如何捕获该请求,无论是"创建","更新","读取","删除"等.

谢谢

jmk*_*142 15

您可以考虑的另一个选项是使用预先打包的RESTful框架进行滚动,该框架具有内置的所有必要功能来执行Backbone服务器查询.我个人最喜欢的是Josh Lockhart的SlimPHP框架.

一些简单的示例代码(一旦你有SlimPHP设置)用于你的Backbone调用看起来像这样.

$app->get('/user', function() use ($app) {

    // See if session is set, get user info as array
    if (isset($_SESSION['userID']) {
         $user = // grab user with userID data from DB
    }

    // Respond to the get request with a json object
    $response = $app->response;
    $response['Content-Type'] = 'application/json';
    $response->body(json_encode($user));
}
Run Code Online (Sandbox Code Playgroud)

这是一个将Backbone json转换为数组的POST示例.

// Middleware that detects type of data and converts it to something usable
$app->add('Slim_Middleware_ContentTypes');    // JSON to associative array

...

$app->post('/message', function() use ($app) {
    $dataIn = $app->request()->getBody();

    ...

    // Save to DB $dataIn['message'], $dataIn['author'], etc.
}
Run Code Online (Sandbox Code Playgroud)

这是一个使用一些参数的PUT示例.

$app->put('/user/:id', function($id) use ($app) {

    // Find appropriate user from DB that has $id as ID

    $dataIn = $app->request()->getBody();

    // Save to DB $dataIn['name'], $dataIn['age'], etc.
}
Run Code Online (Sandbox Code Playgroud)

这是一个删除.

$app->delete('/message/:id', function($id) use ($app) {

    // Find appropriate message from DB that has $id as ID

    // Delete message with id of $id
}
Run Code Online (Sandbox Code Playgroud)

虽然这不是所有其他需要考虑的事情的详尽示例,但它应该让您了解已经存在的各种开放式解决方案供您使用.我个人喜欢Slim,因为它非常轻巧,简单,但它具有RESTful服务器所需的所有功能.非常适合原型设计.将它与数据库抽象层和其他一些工具相结合,您可以更快地制作任何您想要的东西.

您可以在这里看到一些其他示例代码:

  1. 如何将Backbone模型发布到服务器
  2. 保存Backbone数据的方法

这里有一些基于PHP的RESTful解决方案的链接:Framework List


Fly*_*ana 8

backbone.js的模型使用特定的URL来获取和发送数据.你必须确保在那里有一个PHP脚本.

现在有两种可能性.

首先,该方法作为附加变量在$ _POST内发送.其次,您必须查找可以使用的已使用的请求方法(GET,POST,PUT,DELETE)$_SERVER['REQUEST_METHOD']

现在你可以使用简单的if-else或switch语句来处理请求并提供所需的数据,就像我认为json一样.