Php Can';t将主干JS模型保存到MySQL数据库
我是学习主干JS的初学者,在将第一个测试模型保存到MySQL数据库时遇到了问题。尽管AJAX请求是从主干网发送的,并且具有正确的POST负载(根据浏览器检查器),但我在后端的PHP脚本似乎接收到一个空数组 以下是模型的代码: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: '' }
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());