私はバックボーン 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 を使用しています。また、Backbone モデルでは "/user" などの単純なルート URL を使用する必要があることもわかっています... テスト目的で一時的に "backboneUserBackend.php" スクリプトを使用しています。