2016-04-27 18 views
2

$ .get()リクエストを使用して、Laravelコントローラからデータを取得し、Javascriptでデータの配列を取得しています。Jqueryはデータを1回だけループするか、データを1回だけ表示します

function getSpots1(){ 

var spots = $('#event-spots1'); 
    spots.empty(); 
    spots.html('<p><i class="uk-icon-refresh uk-icon-medium uk-icon-spin"></i></p>'); 
    var event_id = $("#event-event_id").val(); 
    var event_date = $("#event-date").val(); 
    var code = ''; 
    console.log(event_date); 
    $.get("/1/users/spots/" + event_id + "/" + event_date + "/date", function(data) { 
     spots.empty(); 
     console.log(data); 

     code += '<label for="event_time" class="uk-form-label">Select Time</label><select class="uk-width-1-1" name="event_time" id="event-time">'; 
     $.each(data.spots, function(index, value) 
     { 
      code += '<option value="' + value.event_time + '">' + value.event_time + '</option>'; 
     }); 

     code += '</select><p class="uk-form-help-block uk-text-muted">The spot you\'re booking</p>'; 
     code += '</br><div class="uk-margin-bottom"><label for="event_time" class="uk-form-label">Price</label>'; 

     $.each(data.spots, function(index, value) 
     { 
      code += '<input type="text" class="uk-width-1-1" value="' + value.price + '" disabled />';  
     }); 

     spots.append(code); 
     getSpots2(); 
    }); 

} 

データ配列をループする$ .each()jqueryメソッドがあります。 2番目の$ .each()メソッドでは、一度ループするだけです。ループ長に応じてvalue.priceが複数回取得されます。最初の$。私は入力フィールドを選択しているので、ループが必要です。 データ変数に一度ループする$ .eachではなく、別の方法がありますか?私は新しく、以前はJqueryやJavascriptを実際にコーディングしていませんでした。

答えて

3

たとえば、data.spotsの最初のオブジェクトを得るには、たとえばdata.spots[0].event_timeのようにしてから、ループする必要はありません。あまり推奨

、あなただけの例のようなループの最後でreturn false;を入れることができます:すぐにループを停止

$.each(data.spots, function(index, value) 
     { 
      code += '<input type="text" class="uk-width-1-1" value="' + value.price + '" disabled />'; 
      return false; 
     }); 

を。

+1

1つのオブジェクトにしかアクセスしていない場合は、なぜループするのですか? – rosscooper

+0

ありがとう、両方のソリューションが動作します。ループとそれなしでも:) –

関連する問題