In a PHP page I have a drop-down list that triggers the jQuery change function and does a POST with AJAX in order to populate a second drop-down list in the page.
It should all be pretty simple, however Firebug throws an syntax error for a '?' that appears in my code at run-time which isn't actually in my code.
This is my javascript code:
$(document).ready(function() {
$('#taglist').change(function(){
$.ajax({
type: "POST",
url: "../includes/ajax.php",
data: "taglist=" + $(this).find("option:selected").attr('value'),
dataType: 'json',
success: function(response, textStatus, jqXHR) {
$("#catlist").html(response.catlist);
},
error: function (xhr, textStatus, errorThrown) {
$("#catlist").html(xhr.responseText);
}
});
});
});
Following, is the PHP code that executes in ajax.php:
if(isset($_POST['taglist'])){
$catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
$catlist .= fillselecteditmultiple(0, 0, $_POST['taglist']);
$catlist .= '</select>';
echo json_encode(array("status"=>"success", "catlist" => $catlist));
}
fillselecteditmultiple() outputs the options for the populated highlighting those that should be pre-selected. It works fine as I use in other pages without a problem. To make sure it wasn't an error being thrown from the function itself, I even tried changing the function to output a simple $catlist='abc' string as a response, still the same error.
The strange part is that Firebug throws an error at the last 2 lines of the javascript code like you can see in the image attached:
What could be causing cause the '?' to appear in my code?
Just check your encoding. When you see "strange" symbols in the end of a line, that can be caused mostly with encoding troubles.
And in addition, common advice:
When a program doesn't know how to represent a unicode code point, it prints a question mark inside a square (I suppose you have seen this before), or in case it cannot, a simple question mark. An unexpected question mark always makes a developer suspect of encoding.
(c) Áxel
you send in javascript code this data,
data: "tag=" + $(this).find("option:selected").attr('value')
but in php file you try to get $_POST['taglist'],
variable names are not the same.
try to change data: "taglist=...." or $_POST['tag'].
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With