2013-01-03 16 views
6

私はGETを使ってIDを渡すphpページへのajax呼び出しを持っています。ajaxを読み込んだPHPページにPHPスクリプトを再度含める必要がありますか?

<script> 
$("#oid").change(function(){ 
    var oid = $(this).val(); 
    alert(oid); 
    $.ajax({ 
     type: "GET", 
     url: "tabela_reservas.php", 
     data: "oid="+oid, 
     success: function(html) { 
      $("#tabela_reservas").html(html); 
     } 
    }); 
}); 
</script> 

それがPHPを除いて、作品は私にエラーを与える:

Fatal error: Class 'Reserva' not found in C:\xampp\htdocs\kwagenda\tabela_reservas.php on line 20

私はそれが動作"tabela_reservas.php"で私のクラスファイルが含まれている場合。しかし、これらのクラスファイルはすでに私がこのajaxページを呼び出している私の"index.php"にロードされています。

質問:私のPHPクラスファイルを"tabela_reservas.php"にもう一度入れる必要がありますか、それとももう1つの方法がありますか?

私には、非常に上品な解決策ではないようで、オーバーヘッドのように見えるので、私は自分のページに同じことを2回ロードするので、これを尋ねます。

これは正しいことですか、これを行う別の方法がありますか?

ありがとうございます!

+0

あなたのtabela_reservas.phpに直接アクセスしてみてください。同じエラーも発生します。だから、AJAXで呼び出す前にページをうまく動かす必要があります。 – Termis

答えて

4

サーバーにajaxリクエストを行う場合、別のページに移動するのと同じように、これはまったく新しいリクエストです。

はい、すべてをもう一度含める必要があります。

クラスを組み込むためのより洗練されたソリューションのために、クラスのオートローディングを検討する必要があります。

+0

ありがとう!それはとても役に立ちました。 – TiagoRL

3

index.phptabela_reservas.phpの間には関係がないため、すべてのクラスファイルをtabela_reservas.phpに再度含める必要があります。

すべてのajaxリクエストは、現在の(呼び出し元)ページとは無関係に全く新しいものです。新しいページが呼び出されているとみなしてください:)

3

AJAX呼び出しとは:新しいページを呼び出すことです。呼び出しがどこから来たかは関係ありません。バックグラウンドで新しいページを呼び出すようなものです。

このように、ブラウザがアクセスした場合に解析されるように、それは新しいものとして解析されます。

だからはい:AJAX経由で呼び出すスクリプトには、必要なスクリプトをすべて組み込む必要があります。

0

このクラスの別のインスタンスを別のスクリプトで使用する必要があります。これを行う別の方法は、PHPのオートロード/マジックローディングを使用することです(PHP: Autoloadingを参照)

関連する問題