1

ユーザーからの入力に依存するデータベースのデータを表示しようとしています。ajax リクエストを使用してデータを取得し、コントローラーの関数に送り返し、ビューにエクスポートします。このデータを収集して、別のビューに移動せずに表示したいと思います (以前のフォームを非表示にして、新しいフォームを再表示するだけです)。

関連するコードは次のとおりです。

Javascript:

$('#submit_one').on('click', function(event) {
        event.preventDefault();

        if(! $(this).hasClass('faded')) {


        var fbid = $("input[name='like']:checked").val();
//variable to be collected is fbid


        request = $.ajax({ 
        url: "http://crowdtest.dev:8888/fans/pick_favorite", 
        type: "post", success:function(data){}, 
        data: {'fbid': fbid} ,beforeSend: function(data){
            console.log(data);
        } 
        });

        to_welcome_two();
        }

    });

function to_welcome_two()
{
    $('#welcome_one').addClass('hidden');
    $('#welcome_two').removeClass('hidden');
}

コントローラー機能:

public function pick_favorite() {

            $fbid=Input::get('fbid');

            return Artist::specific_artist($fbid);

        }

public function getWelcome() {

        return View::make('fans.welcome')
        ->with('artists', Artist::artists_all())
        ->with('favorite_artist', Artist::favorite_artist())
        ->with('pick', FansController::pick_favorite());

    }

モデル機能:

public static function specific_artist($fbid) {
        $specific_artist = DB::table('artists')
                        ->where('artists.fbid', '=', $fbid)
                        ->get();

        return $specific_artist;

    }

ビューは「ようこそ」ページにあります。私の質問は、モデル データをビューに表示し、fbid 入力から正しいデータが出力されていることを確認するにはどうすればよいですか?

私はこのようなことを試しました:

@foreach($pick as $p)
    <span class="artist_text">{{$p->stage_name}}</span>
    <br>
    <span class="artist_city">{{$p->city}}</span>
@endforeach

しかし、これは何も出力していません。何か案は?

4

1 に答える 1

0

ここには多くの問題があります。

サーバ側:

public function pick_favorite().... それは何をするためのものか?いくつかのデータを返すだけです。

public function getWelcome() {、あなたが書きましたFansController::pick_favorite()。両方が同じメソッドであると仮定すると、静的メソッドにアクセスしていますが、メソッドは静的ではありません。これに対してエラーが発生していますが、定義していないため、表示されていませんfail()

そして、直接実行できるモデル呼び出し以外に何もしないメソッドを宣言する意味がわかりません。

たとえば、私が持っているとしましょうfooModel

public function index(){}

コントローラーで、私はただ書くことができます、

public function bar()
{
  $model = new fooModel;
  return View::make(array('param1'=>$model->index()));

}

または、 fooModelindex()のメソッドをstatic として宣言すると、次のように記述できます。

public function bar()
{
    return View::make(array('param1'=>fooModel::index()));
}

クライアント側:

今あなたのjavascriptで、

$('#submit_one').on('click', function(event) {
    event.preventDefault();

    if(! $(this).hasClass('faded')) {


    var fbid = $("input[name='like']:checked").val();
//variable to be collected is fbid


    request = $.ajax({ 
    url: "http://crowdtest.dev:8888/fans/pick_favorite", 
    type: "post", success:function(data){}, 
    data: {'fbid': fbid} ,beforeSend: function(data){
        console.log(data);
    } 
    });

    to_welcome_two();
    }

});

function to_welcome_two()
{
    $('#welcome_one').addClass('hidden');
    $('#welcome_two').removeClass('hidden');
}

なぜデータを印刷する必要があるのですか?スクリプトに何も印刷するように要求していません。あなたのコードのどこにあなたの.doneまたは.successパラメータがありますか?

コンソールを見ると、多くの php エラーが表示されます。ほぼ間違いありません。

アドバイスとして、いくつかの基本を学ぶ必要があります。たとえば、jquery ajax 呼び出し。

a basic ajax call can be 

    var request = $.ajax({
url: "script.php",
type: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});

コードに実装してから、スローされるエラーを確認してください。

結論:

1つ目は(残りのコードが問題ないと仮定して)静的エラーです。static として呼び出したい場合は、static として宣言します。コントローラーの静的関数?その目的がわかりません。

そしてデバッグを開始します。あなたの問題はクライアント側とサーバー側の両方にあります。一つ一つ対処します。

于 2013-10-09T07:37:21.510 に答える