Reputation: 367
I have a function wich is called in change in a listbox, the function have an ajax request to retrive options for other listboxes, I tried to parse html response from ajax jquery, but it doesn't work, only the response 'data' is displayed, i would like to find element in the html response, this is my code
function loadOptionsValues(id) {
$.ajax(
{
type: 'POST',
url: baseDir + 'ajax.php',
data: 'val_select=' + $('#'+id).text()+'&id_product='+id_product,
dataType: "html",
success: function(data){
$( "select[id!='"+id+"']" ).each(function(){
$(this).html($(html).find('#'+$(this).attr('id')).text());
alert('text select'+$(html).find('#'+$(this).attr('id')).html());
});
}
});
}
The response looks like this
<html>
<select id="group_1">
<option id="Ecru">Ecru</option>
<option id="Gris">Gris</option>
<option id="Gris">Gris</option>
<option id="Gris">Gris</option>
<option id="Gris">Gris</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Marine">Marine</option>
<option id="Noir">Noir</option>
<option id="Noir">Noir</option>
<option id="Noir">Noir</option>
<option id="Noir">Noir</option>
<option id="Noir">Noir</option>
<option id="Noir">Noir</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Rose">Rose</option>
<option id="Taupe">Taupe</option>
</select>
<select id="group_3">
<option id="Cuir">Cuir</option>
<option id="Daim">Daim</option>
<option id="Daim">Daim</option>
<option id="Daim">Daim</option>
<option id="Daim">Daim</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
<option id="Cuir">Cuir</option>
</select>
<select id="group_2">
<option id="40">40</option>
<option id="37">37</option>
<option id="40">40</option>
<option id="39">39</option>
<option id="38">38</option>
<option id="37">37</option>
<option id="41">41</option>
<option id="36">36</option>
<option id="40">40</option>
<option id="35">35</option>
<option id="39">39</option>
<option id="38">38</option>
<option id="40">40</option>
<option id="36">36</option>
<option id="39">39</option>
<option id="38">38</option>
<option id="41">41</option>
<option id="37">37</option>
<option id="38">38</option>
<option id="37">37</option>
<option id="41">41</option>
<option id="36">36</option>
<option id="40">40</option>
<option id="35">35</option>
<option id="39">39</option>
<option id="41">41</option>
</select>
</html>
Upvotes: 0
Views: 298
Reputation: 104775
this
within the success function no longer refers to the original elements. You should set a context variable:
function loadOptionsValues(id) {
var that = $(this);
$.ajax(
{
type: 'POST',
url: baseDir + 'ajax.php',
data: 'val_select=' + $('#'+id).text()+'&id_product='+id_product,
dataType: "html",
success: function(data){
$( "select[id!='"+id+"']" ).each(function(){
that.html($(html).find('#'+that.id).text());
alert('text select'+$(html).find('#'+that.id).html());
});
}
});
}
Upvotes: 1