2013-06-17 8 views
0

Мне нужно отобразить отчет с некоторыми данными с сервера, а также диаграмму .. im пытается отправить данные json с помощью $ .getJSON после того, как форма уже отправлена, но для некоторых причина им даже не в состоянии повторить из $ _GET [представитель], чтобы убедиться, что IM ПОЛУЧАТЬ правильные данные .. ниже код PHP и здесь является JS http://jsfiddle.net/f8rGb/2/Показать график после отправки формы через AJAX

PHP кОД

if (isset($_POST["search"]) and $_POST["search"] == "go"){ 

    $name = $_POST['term']; 

    $project = new Project(); 
    $pro = $project->get_project($name); 
    $serv = $project->get_project_service_by_id($pro); 

    // DOING this to make sure i recieve the variable 
     // echo $_GET['rep']; 

     if(isset($_GET['rep'])) 
     die(json_encode($serv)); 

    } 

JS кОД

function searchProjectsRep() { 

    // TRIGGERING THIS FUNCTION IN THE ONSUBMIT EVENT OF THE FORM 

    var datos = $('#formProjectsRepSearch').serialize(); 
    var uri = $('#formProjectsRepSearch').attr('action'); 
    $.ajax({ 
     url: uri, 
     data: datos, 
     type: 'POST', 
     success: function(resp) { 
      $('#ajaxProjectsRep').html(resp); 
      projectChart(); 
     } 
}); 
} 

// CHART FUNCTION 

function projectChart(){ 

$.getJSON('controller.php?rep=1', function(data) { 

    options = { 
     chart: { 
     renderTo: 'chart_div', 
     defaultSeriesType: 'pie' 
    }, 
    title: { 
     text: 'Datos de proyecto' 
    }, 

    series: [] 
    }; 
     var statusCount = {}, 
     serie1 = []; 

     data.forEach(function(e) { 
     statusCount[e.status] = 1 + (statusCount[e.status] || 0); 
    }); 

    $.each(statusCount, function(status, count) { 
    serie1.push([status, count]); 
    }); 
    options.series.push({data: serie1}); 

    new Highcharts.Chart(options); 

    }); 
    } 
+0

Для начала вы попробовали 'var_dump ($ _ GET)'? –

+0

Wow, возвращая переменную '$ _GET' внутри условия, которое проверяет, был ли выполнен запрос' $ _POST'. Как вы работаете одновременно? – adeneo

ответ

0

Вы можете только сделать либо POST запрос, или GET запрос, а не как в то же время, так что не возвращают содержимое переменной GET внутри функции, которая проверяет, если POST запрос был сделан:

if (isset($_POST["search"]) && trim($_POST["search"]) == "go"){ 
    $name = $_POST['term']; 
    $project = new Project(); 
    $pro  = $project->get_project($name); 
    $serv = $project->get_project_service_by_id($pro); 
    exit; 
} 

if(isset($_GET['rep'])) 
    echo json_encode($serv); 
    exit; 
} 

С другой стороны, в чем смысл делать два вызова ajax, просто верните данные в первом, где представлена ​​форма?

+0

Если я удаляю if (isset ($ _ GET ['rep'])) из первого оператора if, как вы делали, я получаю Undefined variable: serv. Также я не знаю, что вы имеете в виду, возвращая данные в первом вызове ajax .. спасибо за помощь по пути – adavia

+0

Да, но вызов PHP-файла с другим вызовом ajax снова загрузил бы файл, t отправьте запрос POST с формой, чтобы получить некоторые данные, а затем просто выполните другой вызов ajax и ожидайте возвращения данных из первого вызова ajax. Вы должны сделать все в первом вызове ajax, просто добавьте переменную rep и запустите JSON. – adeneo

Смежные вопросы