2017-02-22 41 views
0

我有一個帶有onclick屬性的html按鈕,它運行指向php代碼的jQuery AJAX函數。
PHP代碼在HTML輸出HTML <select>元素中寫入HTML(元素保持隱藏狀態,直到javascript運行。)
當單擊「添加另一個」按鈕時,這很適合填充<select>JS Ajax OnClick:如何多次執行php代碼?

問題是它增加了一個也是唯一一個。我希望能夠有一個新的<select>標籤與每個所討論的點擊「添加另一個」按鈕高達2
一個最大的JS的填充:

var genre_dropdown = function genre_dropdown() { 
    $('.genre_output').css('display', 'block'); 
    $.ajax({ 
     url:'../includes/functions/genre_dropdown.php', 
     complete: function (response) { 
     $('.genre_output').html(response.responseText); 
     }, 
     error: function() { 
      $('.genre_output').html('Bummer: there was an error!'); 
     } 
    }); 
    return false; 
} 


中的HTML問題:

<select name="genre_id[]" autocomplete="off" class="genre_output"></select> 
    <select name="genre_id[]" autocomplete="off" class="genre_output"></select> 
    <div class="button add-genre-button" onclick="return genre_dropdown();">+ Add Existing Genre</div> 


我以爲我可以包括2個HTML元素<select>爲PHP來填充進,代碼從一個執行到TH e接下來。我明白爲什麼這是不正確的,代碼在同一時間運行。我在一個我正在考慮的地方有2個按鈕(「添加一個」,「添加另一個」),但看起來多餘而且不正確,特別是考慮到我想要一個可縮放的技術(最大值可能不總是2 。) 我需要幫助。

回答

0

您的PHP請求很好。

我只是意味着你每做一個請求,這將包括響應作爲元素的值時定義一個變量爲你使用javascript即:

var sel = '<select name="genre_id[]" autocomplete="off" class="genre_output">' + response + "</select>'; 

,然後。這將允許您根據需要多次追加父div。最後,使用一個簡單的if計數器來決定是否繼續追加:

if ($(".genre_output").length <= 2){ 
    $("PARENT_DIV_ID").append(sel); 
}; 

這是否更清楚? @kaari

+0

將如何使用PHP這項工作?我會在PHP文件中將html元素描述爲「模板化」?這個答案不清楚。 –

+0

當我嘗試這個時,插入選擇元素的是「[object Object]」,而不是php代碼的結果。 –

+0

這不是壞消息,至少你的div是獲取信息。你的PHP函數傳遞數組嗎?它是否包含對象?如果是這種情況,您只需使用一些JavaScript將它們轉換爲字符串進行顯示即可。那有意義嗎? – Luke

0

假設你想保持在下拉列表前面的值,那麼你可以嘗試追加()而不是HTML()

$('.genre_output').append(response.responseText);