Кнопка jQuery не работает с кликом, но работает при добавлении в окно оповещения - PullRequest
1 голос
/ 04 октября 2010

Я добавил кнопку на HTML-страницу, чтобы сделать некоторые заговоры. Кнопка для правильного построения рисунка, но когда я добавляю в код окно предупреждения, щелчок работает как задумано. Есть ли видимые ошибки в моем опубликованном коде?

Как я могу реализовать это для правильной работы?

Вот часть кода:

// append to p container
pcontainer = $('<p></p>').append(button).appendTo('#plot');

//$('<input type="button" value="Plot Data" />').click(getData).appendTo('#plot');
// add all the variables}

/*
 * Download data for all the requested variables.
 */
function getData() {
    var baseUrl = document.getElementById('url').value;  // get the url address
    var x1,x2;
    var url = baseUrl + '.dods?';
    for (var i=0; i < document.variablesX.vx.length; i++) {
        var selectedX = $('#variablesX :radio').filter(':checked');

        //define the variables X that have been selected
        if (selectedX.length ==0) {
            alert("please choose ONE variable foraxisX");
            return;
        }

        var selectedY = $('#variablesY :radio').filter(':checked'); // define the variables Y that have been selected
        if (selectedY.length ==0) {
            alert("please choose ONE variable for axis Y"); return;
        }

        var selectedType = $('#myplot :radio').filter(':checked');  // define the plot type that have been selected
        if (selectedType.length ==0) {
            alert("please choose ONE plot type"); return;
        }

        if (document.variablesX.vx[i].checked) {
            // for each selected variable, get the data and pass to textarea.
            var url1 = url + document.variablesX.vx[i].id;
            loadData(url1, function(data) {
                x1 = toJsonString(data); //alert(x1);
            },  '/proxy/'); // load data from url1
        };

        if (document.variablesY.vy[i].checked) {
            // for each selected variable, get the data and pass to textarea.
            var url2 = url + document.variablesY.vy[i].id;
            loadData(url2, function(data) {
                x2 = toJsonString(data);}, '/proxy/'); // load data from url2
        };
    };

    //alert ("You have chosen to plot.");
    plotData(x1,x2);
}

function plotData(x1,x2) {
    var arr1, arr2; // define 1 dimentional array to get splited strings
    var d1 = []; // define array to put the two variables together
    arr1 = x1.split (",");
    arr2 = x2.split (","); // convert string into array

    for (var i = 0; i < arr1.length; i += 1)
        d1.push([arr1[i], arr2[i]]);  // combine two variables into one array

    // plot in flot
    $(function () {
        $.plot($("#placeholder"),[d1]);
    });
}

Есть ли видимые ошибки в моем коде? Можете ли вы помочь мне реализовать то, что я описал?

1 Ответ

0 голосов
/ 04 октября 2010

Пожалуйста, опубликуйте код вашей подпрограммы getData (), которая получает данные с сервера.

Если вы используете Ajax $ .get (или аналогичный), это асинхронный вызов и следующие операторыоно будет выполнено до того, как вызов для получения данных будет фактически завершен.Либо оберните следующие операторы в функцию успеха для вызова ajax, либо получите данные с асинхронным значением, равным false.

Ваше предупреждение замедляет процесс, так что получение данных завершено, прежде чем перейти к следующему шагу..

...