0

任何人都可以看到这段代码有什么问题吗?它连接到一个回显 Json 数据的 php 函数。我正在运行 Jquery 1.9.1。我相信问题出在 Jquery 脚本的末尾,但我找不到任何解决方案......

var formObject = {
   run : function(obj) {
        if (obj.val() === '') {
       obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
   } else {
       var id = obj.attr('id');
       var v = obj.val();
       jQuery.getJSON('func/blankett_func.php', { id : id, value : v }, function(data) {
            if (!data.error) {
                obj.next('.update').html(data.list).removeAttr('disabled');
            } else {
                obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
            }
        });
    }
}
  };
$(function() {

    $('.update').live('change', function() {
        formObject.run($(this));
    });

});

php函数:

$id = $_GET['id'];
$value = $_GET['value'];

try {

    $objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root');
    $objDb->exec('SET CHARACTER SET utf8');

    $sql = "SELECT * 
            FROM `region`
            WHERE `master_id` = ?";
    $statement = $objDb->prepare($sql);
    $statement->execute(array($value));
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);

    if (!empty($list)) {

        $out = array('<option value="">Select one</option>');

        foreach($list as $row) {
            $out[] = '<option value="'.$row['id'].'">'.$row['region'].'</option>';
        }

        echo json_encode(array('error' => false, 'list' => implode('', $out)));

    } else {
        echo json_encode(array('error' => true));
    }

} catch(PDOException $e) {
    echo json_encode(array('error' => true));
}

    } else {
echo json_encode(array('error' => true));
  }
4

1 回答 1

1

原代码的问题出在 .live 的 javascript 中,应该改成 .on

它没有触发的原因是 jQuery 改变了 API。 http://api.jquery.com/on/

新的 jQuery 脚本:

var formObject = {
run : function(obj) {
    if (obj.val() === '') {
        obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
    } else {
        var id = obj.attr('id');
        var v = obj.val();
        jQuery.getJSON('func/blankett_func.php', { id : id, value : v }, function(data) {
            if (!data.error) {
                obj.next('.update').html(data.list).removeAttr('disabled');
            } else {
                obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
            }
        });
    }
}
};
$(function() {

$('.update').on('change', function() {
    formObject.run($(this));
});

});
于 2013-02-25T23:56:38.670 回答