2016-04-18 1 views
1

У меня есть следующий сценарий, который используется для визуализации диаграммы:Как передать значение DropDownList в АЯКС URL

var num = 'five'; 

function drawColumn() { 
    $(function() { 
    $.ajax({ 
     url: 'http://localhost/Admin/chart_data.php?num=' + num, 
     type: 'GET', 
     success: function(data) { 
     chartData = data; 
     var chartProperties = { 
      "caption": "Top 10 wicket takes ODI Cricket in 2015", 
      "xAxisName": "Player", 
      "yAxisName": "Wickets Taken", 
      "rotatevalues": "1", 
      "theme": "fint" 
     }; 
     alert('chart rendered'); 
     apiChart = new FusionCharts({ 
      type: 'column2d', 
      renderAt: 'chartContainer', 
      width: '500', 
      height: '300', 
      dataFormat: 'json', 
      dataSource: { 
      "chart": chartProperties, 
      "data": chartData 
      } 
     }); 
     apiChart.render(); 

     } 
    }); 
    }); 
} 

HTML, который будет вызывать эту функцию следующим образом:

<select name="select1" onchange="num=this.value;drawColumn();"> 
    <option value="five">Five</option> 
    <option value="all">All</option> 
</select> 

Диаграмма получает визуализированный первый раз, когда страница загружается. Однако это не отображается, когда параметры отображаются в раскрывающемся списке. Где я иду не так? Пожалуйста, помогите

+0

попробуйте добавить console.log ('огонь'); прямо внутри вашей функции, затем откройте консоль и найдите ее, когда вы измените свой снимок. –

+3

попробуйте удалить '$ (function() {', поскольку это сокращенно для _document.ready_ – BenG

+0

удаление $ (function() {работал для меня, спасибо вам большое :) –

ответ

0

Добавление обработчика документа внутри вызова функции не работает. Это связано с тем, что событие готовности документа ранее было запущено и не будет запускаться еще раз, поэтому функция никогда не выполняет содержимое.

function drawColumn() { 
    $(function() {//document ready handler 
    ...code here 
    }); 
} 

собственно:

function drawColumn() { 
     ...code here 
} 

EDIT: предложения

Вместо этого:

<select name="select1" onchange="num=this.value;drawColumn();"> 
    <option value="five">Five</option> 
    <option value="all">All</option> 
</select> 

Это

<select id="select1" name="select1"> 
    <option value="five">Five</option> 
    <option value="all">All</option> 
</select> 

Тогда это:

$(function() { 
    $('#select1').on('change', drawColumn); 
    function drawColumn(data) { 
    var num = $(this).val(); 
    $.ajax({ 
     url: 'http://localhost/Admin/chart_data.php?num=' + num, 
     type: 'GET' 
    }).done(function(data) { 
     var chartData = data; 
     var chartProperties = { 
     "caption": "Top 10 wicket takes ODI Cricket in 2015", 
     "xAxisName": "Player", 
     "yAxisName": "Wickets Taken", 
     "rotatevalues": "1", 
     "theme": "fint" 
     }; 
     alert('chart rendered'); 
     var apiChart = new FusionCharts({ 
     type: 'column2d', 
     renderAt: 'chartContainer', 
     width: '500', 
     height: '300', 
     dataFormat: 'json', 
     dataSource: { 
      "chart": chartProperties, 
      "data": chartData 
     } 
     }); 
     apiChart.render(); 
    }); 
    } 
});