簡體   English   中英

AJAX 請求復制整個頁面

[英]AJAX request duplicates entire page

我正在嘗試實現鏈式依賴下拉 combobox 選擇。 I have a 'category' HTML combobox and once the value in there is changed, another combobox should appear to select a subcategory and so on until the innermost (most specific) category is selected. 因此,每當 combobox 中的值發生更改時,我都會觸發 AJAX GET 請求,該請求應該只重新加載頁面的該位,但是目前我的代碼只是復制整個頁面,而不是僅僅創建一個新的<select>

這是我的 Django 模板和 jQuery 代碼:

{% extends 'pages/base.html' %}

{% block content %}
<h1>Create a product</h1>
<form method='POST' id='productForm' data-products-url="{% url 'products:ajax_load_categories' %}">
    {{ form.as_p }}
</form>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$("#id_category").change(function () {
  var url = $("#productForm").attr("data-product-url");
  var categoryId = $(this).val();

  $.ajax({                       
    url: url,                    
    data: {
      'category': categoryId
    },
    success: function (data) {
      $("#productForm").append(data);
    }
  });
});
</script>
{% endblock %}

這是我的看法:

def load_categories(request):
    category_id = request.GET.get('category')
    subcategories = Category.objects.get(id=category_id).get_children()
    return render(request, 'products/category_dropdown_list_options.html', {'subcategories': subcategories})

這是我的urls.py

app_name = 'products'
urlpatterns = [
    path('create/', product_create_view, name='product-create'),
    path('ajax/load-categories/', load_categories, name='ajax_load_categories')
]

這是我正在嘗試創建的 HTML 的一小部分:

products/category_dropdown_list_options.html

<select>
    {% for subcategory in subcategories %}
        <option value="{{ subcategory.pk }}">{{ subcategory.name }}</option>
    {% endfor %}
</select>

更改此var url = $("#productForm").attr("data-product-url"); var url = $("#productForm").attr("data-products-url");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM