getJSON Jquery работал в jQuery 1.2.3 и теперь в v1.5.1 выбрасывал ошибку разбора - PullRequest
0 голосов
/ 16 марта 2011

Я давно использую этот PHP-скрипт, и он возвращает данные в мой getJSON.Я перешел на jquery новую версию v1.5.1 с 1.2.3 Сегодня и дает ошибку разбора

  <?php

error_reporting(E_ALL);
ini_set("display_errors", 0);
include("conndb.php");

    function createoptions($table , $id , $field , $condition_field , $value)
    {
        $sql = sprintf("select * from $table WHERE $condition_field=%d ORDER BY $field" , $value);
        $res = mysql_query($sql) or die(mysql_error());
        if (mysql_num_rows($res) > 0) {
            while ($a = mysql_fetch_assoc($res))
            $out[] = "{optionValue: {$a[$id]}, optionDisplay: '$a[$field]'}";
            return "[" . implode("," , $out) . "]";
        } else

            return "[{optionValue: -1 , optionDisplay: 'No result'}]";
    }

    if (isset($_GET['country'])) {
        echo createoptions("state" , "state_id" , "state" , "country_id" , $_GET['country']);
    }


    if (isset($_GET['state'])) {
        echo createoptions("city" , "city_id" , "city" , "state_id" , $_GET['state']);
    }

    die();
    ?>

Мой код getJson

$.getJSON("select_old.php",{country: '$(this).val()', ajax: 'true'}, function(j){
                  var options = '';
                  for (var i = 0; i < j.length; i++) {
                    options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
                    if( i==0){
                     populateCity(j[i].optionValue );
                    }
                  }
                  $("select#state").html(options);
                }).error(function(xhr, ajaxOptions, thrownError) {  alert(xhr.statusText); })

Спасибо за вашу помощь

С уважением

Киран

1 Ответ

0 голосов
/ 16 марта 2011
{country: '$(this).val()', ajax: 'true'}

Вероятно, это должно быть

var country = $(this).val();

$.getJSON("select_old.php", { country: country, ajax: 'true' }, function(j) {

Редактировать: Также, см. Мой комментарий выше относительно json_encode() - пример

$data = array();
while ($a = mysql_fetch_assoc($res)) {
    $data[] = array(
        'optionValue'   => $a[$id],
        'optionDisplay' => $a[$field]
    );
}
return json_encode($data);
...