我是学习 Backbone JS 的初学者,我无法将我的第一个测试模型保存到 MySQL 数据库。虽然 AJAX 请求是从 Backbone 发送的带有正确的 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);
每当保存我的 Backbone 模型时,都会创建一个新文件,但该文件包含一个空数组。有什么想法吗?
注意:我使用的是 Chrome。另外,我知道我应该在我的 Backbone 模型中使用简单的根 URL,例如“/user”……我只是暂时使用“backboneUserBackend.php”脚本,用于测试目的。