2

現在、JQuery ajax関数を使用して外部PHPファイルを呼び出しています。このファイルで、データベース内のデータを選択して追加します。これが完了したら、JavaScriptでsuccess関数を実行します。奇妙なことに、ajaxが呼び出されたときにデータベースが正常に更新されていますが、success関数は実行されていません。これが私のコードです:

<!DOCTYPE html>
<head>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
</head>
<body>
<div onclick="addtask();" style="width:400px; height:200px; background:#000000;"></div>
<script>
function addtask() {
var tid = (Math.floor(Math.random() * 3)) + 1;
var tsk = (Math.floor(Math.random() * 10)) + 1;

if(tsk !== 1) {
    $.ajax({
    type: "POST",
    url: "taskcheck.php",
    dataType: "json",
    data: {taskid:tid},
    success: function(task) {alert(task.name);}
    });
}
}

</script>
</body>
</html>

そしてPHPファイル:

session_start(); 

$connect = mysql_connect('x', 'x', 'x') or die('Not Connecting'); 
mysql_select_db('x') or die ('No Database Selected'); 

$task = $_REQUEST['taskid']; 
$uid = $_SESSION['user_id']; 

$q = "SELECT task_id, taskname FROM tasks WHERE task_id=" .$task. " LIMIT 1"; 
$gettask = mysql_fetch_assoc(mysql_query($q)); 

$q = "INSERT INTO user_tasks (ut_id, user_id, task_id, taskstatus, taskactive) VALUES (null, " .$uid. ", '{$gettask['task_id']}', 0, 1)"; 
$puttask = mysql_fetch_assoc(mysql_query($q)); 

$json = array( 
    "name" => $gettask['taskname'] 
); 

$output = json_encode($json); 
echo $output; 

ご不明な点やご意見がございましたら、お気軽にお問い合わせください。

ここに画像の説明を入力してください

4

1 に答える 1

1

実行されていると思いますが、エラーのためにアラートが表示されません-

success: function(task) {alert(task.name);} 

最初にJSONをデコードする必要がありjQuery.parseJSON()ます。タスクは単なる文字列であり、次のようになります。

function(m)
        {
            var task = jQuery.parseJSON( m );
            alert(task['name']);
        }

編集:わかりました...ブラウザで開発者ツールを使用して、成功関数にブレークポイントを設定してみてください。昼食をとらない場合は、ajax呼び出しのエラーコールバックを追加してみてください。

error: function(xhr, exc)
{
   alert(xhr.status);
   alert(exc);
}

Edit2:そしてあなたの問題があります-あなたのajaxはjsonデータを返すだけでなく、php警告も返します、そして今私はあなたの問題がどこにあるかわかります-あなたは挿入、削除の後にデータをフェッチしています

$puttask = mysql_fetch_assoc(mysql_query($q));

今、私はそれに気づかないのが残念です...

于 2012-04-10T05:30:39.100 に答える