私は Laravel 4 を初めて使用し、自分の Web サイトを Laravel 4 に変換できるかどうかを確認しています (以前はフレームワークなしで作成されていました)。AJAX (jQuery 経由) を取得して、コントローラーと適切にやり取りすることができません。
最初に、私が作業しているコントローラーが呼び出され、以下に示すIndexController.php
関数が呼び出さtypes
れます。
class IndexController extends BaseController {
// Other controller functions
public function types($brand) {
$types = DB::select('select * from aircraft_types where brand_id = ?', array($brand));
echo json_encode($types);
}
}
この関数は、データベースからデータを (JSON 形式で) 返します。次に、このコントローラーへのルートを作成し、次のように機能させました。
Route::get('types/{id}', array('uses'=>'IndexController@types'));
//localhost/lavarel/public/types/1 に移動して、ルートと関数が機能していることを二重に確認しましたが、実際には正しい JSON データが返されます。
問題の jquery 関数は次のとおりです。
function updateTypes($brand) {
$("#type").append('<option value="test">Test...</option>'); // This executes correctly
$.getJSON('/types/'+$brand, function(data) {
$("#type").append('<option value="test 2">Test 2...</option>'); // This does not
// Some other JSON related code
});
関数がどこで機能するかをテストするために、使用している項目を編集する 2 行を挿入しました。最初の「テスト」オプションが追加されているため、関数は正しく呼び出されています。ただし、テスト コードの 2 行目は実行されないため、コールバック関数がアクティブになることはないようです。
問題は、私が JavaScript に提供している URL にあると思われます'/types/'+$brand
。いくつかのチュートリアルで、提供する URL の前に BASE 変数が使用されているのを見たことがありますが、上記のコードが機能しない理由がわかりません。ポインタはありますか?
私が間違っているところを誰かに説明してもらえますか?