tarek fellah
tarek fellah

Reputation: 367

parse html ajax response with jquery

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

Answers (1)

tymeJV
tymeJV

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

Related Questions