Question

<select id="countryselect" name="country>
    <option value="US">United States</option>
    .
    .
</select>

<select id="cityselect" name="city"></select>

this is html code and

$.cityselect = function(){
    var td= $('#countryselect').val();
    $.ajax({
        type: "POST",
        url: "action.php",
        data: {'countrytd':td},
        success: function(e){
            $('#cityselect').html(e);
        },
    });
};

this is my chained select function. Mysql process that creating options in action.php.

Here is the thing, when i use this function, the result is that

<select id="cityselect" name="city">
    <option value></option> // empty value
    <option value="1">New York</option>
    <option value="2">Broadway</option>
</select>

i dont want empty value because i need that information. There is no empty value that i wrote to anywhere. There is no problem in php file because when i changed this

$('#cityselect').html(e);

to this

$('#cityselect').html('<option value="1">name</option>');

it adds blank value to top anyway.

how can i disable that process or how can i remove blank value after operation.

Also when i use 'e' that comes from success it includes metatags and some other head elements that i use for language character set in action.php . How can i clean these?

Was it helpful?

Solution

As @roasted stated, it is difficult to fully figure this out without code, but this should resolve at least part of the issue for you:

First, a note: As of jQuery 1.8 the success callback method is deprecated:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

Here is a solution to some of your problem. It is likely not the solution to all of it, as, if you are getting a blank value from your sql query, there is probably a problem with your query, your database, or both. However, this will provide a 'solution' to the front-end part of your problem -> (This is predicated on the assumption that your php file builds the relevant <option> elements for your <select> element):

$.cityselect = function(){
var td= $('#countryselect').val();
$.ajax({
    type: "POST",
    url: "action.php",
    data: {'countrytd':td},
      }).done(function(data){  
         // better not to use 'e' for this variable (can be confusing)

        if($(data).html().replace(/\s/g,'').length){  
        //There are a number of ways to check this 
        //(depends on what you are expecting).
        //  The example I used will also catch blank spaces

               $('#cityselect').html(data);
           }
    })
};
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top