答えが見つかりました:
AJAXポストを実行しようとしているときにスタックしました。何らかの理由で、サーバー500エラーが発生します。コントローラーのブレークポイントにヒットしているのがわかります。アラートとエコーを試みましたPHPファイル、それは動作しません。他のスタックオーバーフロークエリを調べてみましたが、役に立ちませんでした。
add_pet.htmlのAjax呼び出し
<script>
function add_trigger(){
var name=$('#name').text();
var breed=$('#breed').text();
$.ajax({
type: "POST",
url: "add_pet.php",
data: "PET_NAME="+name+"&PET_BREED="+breed,
cache: false,
success: function(result) {
$("script").html(result);
window.location.href='view.html';
}
});
}
$('div[contenteditable]').keydown(function(e) {
if (e.keyCode === 13) {
add_trigger();
return false;
}
});
</script>
<form>
<div id="Heading" style="font-weight:400">Join</div>
<div id='name_label' style="font-weight:100">Name:</div>
<div id='name' contenteditable='true' style="font-weight:100"></div>
<div id='breed_label' style="font-weight:100">Breed:</div>
<div id='breed' contenteditable='true' style="font-weight:100"></div>
<div id='add_trigger' onclick='add_trigger()' style="font-weight:400"><span style="cursor:pointer">Add pet</span></div>
</form>
add_pet.phpデータをデータベースに挿入するコード:
<?php
session_start();
$doctorid=$_SESSION['DOCTOR_ID'];
$PET_NAME=$_POST['PET_NAME'];
$PET_BREED=$_POST['PET_BREED'];
$count_results=execute_MYSQL("SELECT * FROM PETS;");
$PET_ID=$count_results->num_rows;
echo "<script>alert('line=INSERT INTO PETS VALUES ($PET_ID,\"$PET_NAME\",\"$PET_BREED\",$doctorid'));</script>";
execute_MYSQL("INSERT INTO PETS VALUES ($PET_ID,'$PET_NAME','$PET_BREED',$doctorid);");
echo "<script>window.location.href='view.html'</script>"
エラーのスクリーンショット
内部サーバーエラーは、サーバーサイドスクリプトのエラーが原因で発生します。クライアント側のスクリプトに関連するすべてのものではありません。だから私はあなたがphpコードをチェックする必要があると思います。
';'
サーバー側の最後のエコー..そしてあなたは完全なphpコードも与えるべきです私はサーバーデータベース接続とexecute_MYSQL関数定義を意味します。エラーもそれらにある可能性があります。
で試す
type: "GET",
または変更
data: "PET_NAME="+name+"&PET_BREED="+breed,
と:
data: {PET_NAME: name, PET_BREED: breed},
とにかく、サーバー側の「error_log」ファイルをコピーして貼り付けると、わかりやすくなります。
成功したらこれを行います:
function(result){
$("script").html(result);
window.location.href='view.html';
}
そして、私があなたのajaxファイルを見ると、それが機能する場合は、これを返します:
<script>window.location.href='view.html'</script>
これら2つを組み合わせると、次のようになります。
$("script").html("<script>window.location.href='view.html'</script>");
window.location.href='view.html';
あまり意味がありませんか?
Ajax呼び出しからDOCTOR_ID
パラメータをadd_pet.phpに渡していません。 Ajax呼び出しの前に、doctor_id(HTMLには表示されません)をキャプチャして、それをAjax data
ハッシュに渡す必要があります。
function add_trigger() {
var name=$('#name').text();
var breed=$('#breed').text();
var doctor_id=$('#doctor').val();
$.ajax({
type: "POST",
url: "add_pet.php",
data: { PET_NAME: name, PET_BREED: breed, DOCTOR_ID: doctor_id },
cache: false,
success: function(result) {
$("script").html(result);
window.location.href='view.html';
}
});
}
HTMLのdoctor_id
のソースがない場合は、サーバーがこの値を確実に受信し、それを使用してPETSに新しい行を挿入することを期待しているため、これがどこから来たかを特定する必要があります。
add_pet.phpの最後の行にセミコロンがないため、問題が発生します。残りのPHPコードがadd_pet.php
に表示されていないコードがある場合は、それも質問に含めます。あなたのPHPコード。
表示した内容に基づいて、これらはHTTP 500
エラーを解消するはずです。あなたは間違いなくあなたが見たいと思う他のものも持っています。 PETSテーブルからnum_rows
への$PET_ID
のクエリは、テーブルIDの自動インクリメントフィールドに置き換える必要があります。