Php Can';t将主干JS模型保存到MySQL数据库

Php Can';t将主干JS模型保存到MySQL数据库,php,mysql,backbone.js,Php,Mysql,Backbone.js,我是学习主干JS的初学者,在将第一个测试模型保存到MySQL数据库时遇到了问题。尽管AJAX请求是从主干网发送的,并且具有正确的POST负载(根据浏览器检查器),但我在后端的PHP脚本似乎接收到一个空数组 以下是模型的代码: var UserModel = Backbone.Model.extend({ urlRoot: 'backboneUserBackend.php', defaults: { name: '', email: '' }

我是学习主干JS的初学者,在将第一个测试模型保存到MySQL数据库时遇到了问题。尽管AJAX请求是从主干网发送的,并且具有正确的POST负载(根据浏览器检查器),但我在后端的PHP脚本似乎接收到一个空数组

以下是模型的代码:

var UserModel = Backbone.Model.extend({
    urlRoot: 'backboneUserBackend.php',
    defaults: {
        name: '',
        email: ''
    }
});

 var user = new UserModel(),
 userDetails = {name: 'Jim Smith', email: 'jimsmith@example.com'};

 user.save(userDetails, {success: function(user){
    console.log(user);
 }
});
下面是我的PHP脚本:

if (!empty($_POST)) {
// @todo: replace deprecated mysql method w/ PDO connection
mysql_connect("localhost", "user", "password");
mysql_select_db("mydatabase");

if (mysql_errno()) {
    exit('DB connect error: '.mysql_error());
}

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$query = sprintf("INSERT INTO users VALUES (NULL, '%s', '%s')", $name, $email);

if (mysql_query($query)) {
    echo mysql_insert_id();
} else {
    exit('Error inserting record: '.mysql_error());
}
}
为了测试我的PHP脚本是否实际通过AJAX请求执行,我在顶部添加了以下测试:

$fh = fopen("mytest_".time().".txt", "w");
ob_start();
print_r($_POST);
$payload = ob_get_clean();
fwrite($fh, $payload);
fclose($fh);
无论何时保存主干模型,都会创建一个新文件,但该文件包含一个空数组。有什么想法吗


注意:我使用的是Chrome。另外,我知道我应该在我的主干模型中使用一个简单的根URL,比如“/user”。。。出于测试目的,我只是暂时使用“backboneUserBackend.php”脚本

主干网发布您的模型更新了JSON编码,而不是正常的
应用程序/x-www-form-urlencoded
编码,因此如果
$\u POST
数组有效,我会感到惊讶。(PHP不是我通常使用的服务器端语言,因此自上次使用PHP以来,它们可能已经改变了一些东西。)


您的问题的答案似乎可以在这个问题/答案中找到:。

正如@JayC所提到的,主干发送的POST数据是请求正文中的JSON,而不是作为参数。您要做的是:

$data=json_decode(http_get_request_body());
$name=$data->name;
$email=$data->email;
//DB的东西在这里

其他两个答案确实概括了代码中的错误。我建议您考虑使用php微框架,例如,帮助您使用RESTAPI。我最近刚开始学习主干网,使用slim使服务器端的东西变得很简单

配置slim后,设置路由非常简单:

<?php
  require '../lib/Slim/Slim.php';
  \Slim\Slim::registerAutoloader();

  $api = new \Slim\Slim();

  $api->get('/users', function(){ //sql function });
  $api->get('/users/:id', function($id){ sql function });
  $api->post('/users', 'addUser');

  $api->run();
  //functions below
?>

谢谢-我会看看斯利姆!
$user = json_decode($request->getBody());