我正在做一個ajax調用,我想根據結果修改選擇框。我遇到的問題是dom元素在ajax調用中沒有作用域,所以我找不到它的同級並用數據修改它們。澄清看看下面的HTMLajax如何將dom元素傳遞給ajax調用
<div class="field_group">
<select name="example1">
<option value="something">something</option>
</select>
<select name="example2">
<option value="something">something</option>
</select>
</div>
基本上,當例1改變我修改例2的數據。值得注意的是,在任何情況下,我都不能使用某種直接選擇器來解決我的問題,因爲此頁面上的所有字段都是動態選擇的,可能有0到1000個字段。下面是我的實際代碼
$(".landscape_type").on('change',function(){
var my_landscape_type = $(this);
console.log($(this).val());
var product_category = $(this).val();
$.post('/quotes/ajax_get_quote_products/'+product_category, function(data,my_landscape_type) {
var data_object = JSON.parse(data);
console.log(data_object);
console.log('should output here');
console.log(my_landscape_type.val());
if(data_object["error"]) {
alert(data_object["error"]);
my_landscape_type.parents('.field_group').children(".landscape_product").empty();
my_landscape_type.parents('.field_group').children(".landscape_product").append("<option selected='selected' value='-1'>No Products Found!</option>");
} else {
my_landscape_type.parents('.field_group').children(".landscape_product").empty();
my_landscape_type.parents('.field_group').children(".landscape_product").append("<option selected='selected' value='-1'>Select a Product...</option>");
for (index in data_object) {
my_landscape_type.parents('.field_group').children(".landscape_product").append("<option value='"+data_object[index]["product_id"]+"'>"+data_object[index]["product_name"]+"</option>");
console.log(data_object[index], index);
}
}
});
});
如果你看一下,說要在這裏輸出,您可以看到我應該得到my_landscape_type的價值線之下,但因爲我不明白它已經失去範圍和傳球這是我的方式不起作用。
嘗試從您的回調函數參數 –
沒想到這將是簡單的刪除'my_landscape_type',但事實證明這是...謝謝你 – ed209
很樂意幫忙。我發佈了一個解釋的答案 –