views:

72

answers:

2

Hi, the following code works well in Chrome/FireFox, but error in IE. The error shows the message.

Message: 'name' is null or not an object

I know there are quite a few questions related. But they seem to be different in some way. So, please help. Thanks. (The error is occurred at line 7)

    $("#keywords").autocomplete('downloads/get_keywords', {
        multiple: true,
        parse: function(data) {
            return $.map(eval(data), function(row) {
                return {
                    data: row,
                    value: row.name, // error in here.
                    result: row.name
                };
            });
        },
        formatItem: function(item) {
            return format(item);
        }
    });
A: 

This has been fixed for quite a few months. Sorry for answering this late. Be careful for the autocomplete of jQuery, the data source of array should be clean without extra comma which is easily overlooked. In my question, "downloads/get_keywords" is a custom PHP function which returns the array listed in autocomplete drop-down box. But if you are using foreach to collect your array, you probably don't care about the extra comma at the end of array. But IE(only) hates the extra comma. To tackle this, just remove it than the problem is solved.

$return_data = "";

foreach ($items as $key=>$value) {

if (strpos(strtolower($key), $q) !== false) {

  $return_data .= "{ name: \"$key\", to: \"$value\" }, ";

}

}

$return_data = substr_replace($return_data, '', -2); // IE hates extra comma

echo '[' . $return_data . ']';

Jack101