getJSON无法在事件更改的函数中工作

时间:2014-08-11 14:49:44

标签: jquery flask

我想使用getJSON来抓取用户从下拉菜单中选择的项目的属性。

但是,当我将$.getJSON放入由下拉选项激活的函数中时,它不起作用。

//DOES NOT WORK :(
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
function json_tolerances() {
    $.getJSON($SCRIPT_ROOT + '/_json_tolerances', { machine: $('#machine').val() }, function(data){
         tolerances(data);
    });
};
$('#machine').change(json_tolerances);

奇怪的是,当我将$ .getJSON放在它运行的函数之外时。不幸的是,现在它与我的下拉菜单无关。

//WORKS :)
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
$.getJSON($SCRIPT_ROOT + '/_json_tolerances', { machine: $('#machine').val() }, function(data){
    tolerances(data);
});

更奇怪的是,当我在$.getJSON假设提供它的数组中处理代码时,它与$.getJSON有关。

//WORKS :)
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
function json_tolerances() {
    //$.getJSON($SCRIPT_ROOT + '/_json_tolerances', {machine: $('#machine').val()}, function(data){
    var data = {"result": [{"form_field": "polyethylene", "maximum": "-110", "minimum": "-80"}, {"form_field": "air", "maximum": "-993", "minimum": "-983"}, {"form_field": "acrylic", "maximum": "135", "minimum": "105"}, {"form_field": "water", "maximum": "4", "minimum": "-4"}]}
    tolerances(data);
    //});
};
$('#machine').change(json_tolerances);

我是javascript的新手,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

将所有内容放入(document).ready(function() {})为我解决了这个问题。这可能与$.getJSON ...

的异步性质有关
(document).ready(function() {
    var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
    function json_tolerances() {
        $.getJSON($SCRIPT_ROOT + '/_json_tolerances', { machine: $('#machine').val() }, function(data){
        tolerances(data);
        });
    };
    $('#machine').change(json_tolerances);
})

答案 1 :(得分:-1)

var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
function json_tolerances() {
    $.getJSON($SCRIPT_ROOT + '/_json_tolerances', { machine: $('#machine').val() }, function(data){
         tolerances(JSON.parse(data));
    });
};
$('#machine').change(json_tolerances);