2015-04-05 3 views
0

У меня есть два файла basic.php и pptimeline.php. Цель здесь - выбрать значение из выпадающего списка в basic.php, обработать его в pptimeline.php и распечатать его обратно в basic.php. Но у меня нет успеха в этом. Если кто-то может помочь, я ценю.jQuery Ajax и метод POST в PHP

EDIT: файл pptimeline.php действует как файл json header('Content-Type: application/json');. У него есть только запросы, которые я затем повторяю в файле, но здесь не актуальны, поскольку все работает, если я использую значения по умолчанию вместо $nprocess в запросе. Код, отображающий мои данные, находится внутри параметра sucess: в basic.php. Если я удалю то, что вокруг, все работает нормально, но тогда это не изменится в зависимости от того, что я выбираю.

Basic.php

<label for="Process"> NProcess : </label> 
<select id="cproc"> 
    <?php 
foreach ($products as $res3) 
    {echo "<option value='".$res3["PROCESSO"]."'>".$res3["PROCESSO"]."</option>";} 
    ?> 
    </select> 
<script type='text/javascript'> 
    $("#cproc").on("change", function(){ 
     var v1 = $(this).val(); 
     $.ajax({ 
      url: "pptimeline.php", 
      type: "POST", 
      data: {'value' : v1}, 
      success: function(response){ 

      /**DISPLAY DATA IN INTERFACE**/ 
      var tg1 = {}; 
    $(function() { 
     // jQuery widget implementation 
     // with some basic options 
     tg1 = $("#placement").timeline({ 
       "min_zoom":1, 
       "max_zoom":55, 
       "image_lane_height":100, 
       "icon_folder":"timeglider/icons/", 
       "data_source":"pptimeline.php", 
       "constrain_to_data": false 
     }); 
     tg_actor = tg1.data("timeline"); 
     // You'll use tg_actor as the key to access 
     // public API methods like "goTo", etc.   
    }); // end document-ready 
         /****/ 

    }, error: function(x,y,z){ 
       alert("error"); } }); }); 
</script> 

pptimeline.php

if (isset ($_POST['value'])) { 
    $nprocesso = $_POST['value']; 

$query1 = "SELECT TO_CHAR(DATACRIACAO,'YYYY-MM-DD') AS DATACRIACAO, NPROCESSO, 
BLOCOOPERATORIO, TIPOINTERNAMENTO, TIPOINTERNAMENTOCIRURGIA, GLASGOW_HOSPITAL 
FROM PATIENT_TIMELINE_ADMISSAO WHERE NPROCESSO =".$nprocesso.""; 
} 
+0

Это полный файл pptimeline.php? Я не вижу, где вы выполняете запрос или возвращаете какие-либо результаты. Кроме того, вы должны привязывать значение вместо прямого использования параметра post. –

+0

Файл 'pptimeline.php' действует как заголовок json-файла ('Content-Type: application/json');'. У него есть только запросы, которые я затем эхо в файле, но здесь не актуальны, поскольку все работает, если я использую значения по умолчанию вместо '$ nprocess' в запросе. Код, отображающий мои данные, находится внутри параметра 'sucess:' в 'basic.php'. Если я удалю то, что вокруг, все работает нормально, но тогда это не изменится в зависимости от того, что я выбираю. – Zalif

+0

У вас есть '' data_source ":" pptimeline.php ",' в вашем 'tg1 = $ (" # placement "). Timeline ({'. '' Значение, которое вы публикуете в '. $ .ajax()', не сохраненный. Вы можете либо сохранить его как '$ _SESSION' var, либо добавить его в url' data_source'. – Sean

ответ

2

Ваш $.ajax() вызов не требуется. Удалите его, и просто добавить выбранное значение в .timeline()data_source -

<script type='text/javascript'> 
    $("#cproc").on("change", function(){ 
     var v1 = $(this).val(); 
     var tg1 = {}; 
     $(function() { 
      // jQuery widget implementation 
      // with some basic options 
      tg1 = $("#placement").timeline({ 
       "min_zoom":1, 
       "max_zoom":55, 
       "image_lane_height":100, 
       "icon_folder":"timeglider/icons/", 
       "data_source":"pptimeline.php?value="+v1, //add select value to url 
       "constrain_to_data": false 
      }); 
      tg_actor = tg1.data("timeline"); 
      // You'll use tg_actor as the key to access 
      // public API methods like "goTo", etc.   
     }); // end document-ready 
    }); 
</script> 

Затем измените свой PHP код из $_POST в $_GET

if (isset ($_GET['value'])) { 
    $nprocesso = $_GET['value']; //make sure to sanitize value to prevent SQL injection 

    $query1 = "SELECT ... NPROCESSO =".$nprocesso.""; 
} 
+0

Да, это сработало! Спасибо чувак ;) – Zalif