だから、プロトタイプを使い始めることにしました。ここに私の最初の質問があります。私は、単一のレコードを更新するphpページにajaxリクエストを送信しようとしています。私は手でこれを行うと(すなわち:アドレスを入力+それが正常に動作パラメータが、私はJavaScriptからこのコードを使用する場合:プロトタイプajaxが正しくクエリを実行していない
var pars = 'trackname=' + track + '&tracktime=' + time;
new Ajax.Request('php/setSongTime.php', {
method: 'get',
parameters: pars,
onSuccess: function(transport){
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
するonSuccess火災やPHPから正しい情報を表示しますが、更新は行われません。どのようなPHPの戻りはUPDATE文字列があるので、私はパラメータをチェックすることだし、彼らは素晴らしい見て、誰もが問題を見ないおかげで...
合計のjavascript:。?
/*This file handles all the user-based computations*/
//variable declarations to be used throughout the session
var untimedSongArray = [];
function beginProcess(){
new Ajax.Request('php/getUntimed.php', {
method: 'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
untimedSongArray = response.split("+");
alert(response);
getFlashMovie("trackTimer").timeThisTrack(untimedSongArray[0]);
//alert("Success! \n\n" + response);
//var html = response;
},
onFailure: function(){ alert('Something went wrong...') }
});
}
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName]; }
function setSongTime(track, time){
alert("track " + track + " has a time of " + time);
//$.get("php/setSongTime.php", { trackname: track, tracktime: time });
var pars = 'trackname=' + track + '&tracktime=' + time;
new Ajax.Request('php/setSongTime.php', {
method: 'get',
parameters: pars,
onSuccess: function(transport){
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
});
}
総PHPコード:
<?php
//turn on error reporting
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
//header('Content-Type: text/xml');
/////////////Main script
//pull variables
//need to do some error checking here
$trackname = ($_GET['trackname']);
$tracktime = ($_GET['tracktime']);
//remove leading track information
$trackname = str_replace('../music_directory/moe/moe2009-07-18/', '', $trackname);
$trackname = str_replace('.mp3', '', $trackname);
//echo $trackname;
//connect with database
$con = mysql_connect("localhost","root","");
if(!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("musicneverstopped", $con);
//end connecting to database
//////////////////////////////////////////
//update given song time
$sql = "UPDATE songs SET length = ".$tracktime." WHERE unique_song_id = ".$trackname;
echo $sql;
mysql_query("UPDATE songs SET length = '$tracktime' WHERE unique_song_id = '$trackname'");
//error check
//if(!$attempt){
//die(mysql_error());
//}
//////////////////////////////////////////
//close database connection
mysql_close($con);//close mysql connection
?>
誰でもエラーが表示されますか?
mysql_query()コールの後に 'mysql_error()'コールが何かを表示しますか? – ceejayoz
ちなみに、$ sqlが戻ってくるのを見るなら、問題はPrototypeではありません。 – ceejayoz
これはあなたにはお答えできませんが、特に最後のSQLクエリを使用して、入力サニタイズを行う必要があります。私はmysql_real_escape_string http://us.php.net/manual/en/function.mysql-real-escape-string.phpを使用してGET入力を消去します。 – Max