web-dev-qa-db-ja.com

JQuery Ajax Postによる500内部サーバーエラー

答えが見つかりました:

エラーはセミコロンで、うまくいきました!しかし、「KIKO Softwareが指摘した」ため、意味のないコードによりデータベースにデータが2回追加されたため、「$( "script")。html(result);」を削除しましたhtmlファイルの行とすべてが魅力のように機能しました。そして、これはサーバーエラー500とは何の関係もありませんでした。コード内のいくつかのエラーだけです。

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>"

エラーのスクリーンショット

enter image description here

6
Ram Narayanan

内部サーバーエラーは、サーバーサイドスクリプトのエラーが原因で発生します。クライアント側のスクリプトに関連するすべてのものではありません。だから私はあなたがphpコードをチェックする必要があると思います。

';'

サーバー側の最後のエコー..そしてあなたは完全なphpコードも与えるべきです私はサーバーデータベース接続とexecute_MYSQL関数定義を意味します。エラーもそれらにある可能性があります。

5
Tirthraj Rao

で試す

        type: "GET",

または変更

        data: "PET_NAME="+name+"&PET_BREED="+breed,

と:

        data: {PET_NAME: name, PET_BREED: breed},

とにかく、サーバー側の「error_log」ファイルをコピーして貼り付けると、わかりやすくなります。

1
Néstor Lim

成功したらこれを行います:

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';

あまり意味がありませんか?

1
KIKO Software

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の自動インクリメントフィールドに置き換える必要があります。

1
Michael Gaskill