2017-01-17 3 views
-1

Я пытаюсь передать значения на страницу PHP, которая ответит PHP-кодом, который будет загружен. Моя проблема заключается в том, что частично восстановленный PHP-код работает.Ответ PHP частично работает при загрузке ajax

AJAX:

$.ajax({ 
    type: 'post', 
    url: 'bundles_drop.php', 
    data: { 
    time_selected:value, 
    networkType:networkType, 
    }, 
    dataType : 'html', 
    success: function (response) { 
    // We get the element having id of display_info and put the response inside it 
    $("#bundles").html(response); 
    } 
}); 

PHP:

if(isset($_POST['time_selected'])) 
    { 

    $duration_selected = $_POST['time_selected']; 
    //$duration_selected = "day"; 
    $client_network =$_POST['networkType'] 
    } 

Когда я получаю почту AJAX, вторя переменных может быть сделано в течение первых строк кода. Моя проблема - несколько строк кода позже, переменные теряют свои значения (я пытался эхом в разных частях кода, но работает только с несколькими строками).

И переменные сохраняют свои значения только в том случае, если я их жестко кодирую и не использую значения POST. например

$duration_selected = "day"; 

Любые идеи относительно того, что может привести к потере значений POST?

ПОЛНЫЙ PHP КОД:

<?php 

include 'arrays.php'; 

global $netMap; 
global $netArray; 
global $cM; 

global $contABB; 

if(isset($_POST['time_selected'])) 
{ 

    $duration_selected = $_POST['time_selected']; 
    //$duration_selected = "day"; 
    $client_net =$_POST['netType']; 
    //$duration_selected = "ugmtn"; 




    $ds = $duration_selected; 
    $cn = $client_net; 


    $quantityOfCardsArray = array(); 
    $bundle_duration = array(); 
    $numberOfnets = count($netMap[$contABB]); 
    $netNames = array(); 
    $net = array(); 
    $netNames = $netMap[$contABB]; 



    for($i=0;$i<$numberOfnets;$i++) 
    { 
      $thisnet=$netMap[$contABB][$i]; 
      $numD=count($cardMap[$contABB][$thisnet]); 
      $bundle_duration = $cardMap[$contABB][$thisnet]; 
      $netName=$netArray[$contABB]["$thisnet"]["netName"]; 



      for($j=0;$j<$numD;$j++) 
      { 
       $cardIndex=$cardMap[$contABB]["$thisnet"]["$j"]; 
       //var_dump($priceInLocal=$netArray[$contABB]["$thisnet"][0]["$cardIndex"]); 

      } 
    }  
?> 
        <label id="bundlelbl" for="bundle">Please select a bundle</label> 
        <select id="bundle" name="bundle" required> 
<?php 



    foreach($netNames as $index => $net){ 

     if($net == $client_net) 
     { 

      $net_bundle=$netArray[$contABB]["$net"]; 

      foreach($net_bundle as $value) 
      { 
       $value = (array) $value; 

       foreach ($value as $time => $bundle_details) 
       { 
        if($time == $duration_selected) 
        { 
          $detail_count = count($bundle_details); 
          $bundle_details = (array) $bundle_details; 

          //var_dump($bundle_details); 

          foreach($bundle_details as $data_value => $data_details) 
          { 
           $data_details = (array) $data_details; 

           echo "<option value='". $data_details['Item'] ."'> ". $data_details['Item'] ." worth ". $data_details['pr'] . "</option>"; 


          } 

        } 
       } 

      } 

     } 

    } 
} 
?> 

    </select> 


<fieldset> 
    <button type="submit">Submit</button> 

Я мог бы повторить вне пост значения до сих

?> 
        <label id="bundlelbl" for="bundle">Please select a bundle</label> 
        <select id="bundle" name="bundle" required> 
<?php 

за пределами этого дисплея точка эхо не суммируется и не на всех.

РЕШИТЬ:

Я поместил петлю Еогеасп внутри, если заявление, когда за то, что я предполагал, что должно было быть наоборот. Спасибо

+0

Показать остальную часть вашего PHP кода. Это может быть проблема с объемом. – aynber

+0

Можете ли вы опубликовать несколько строк кода позже? Если ваши значения задаются в этом выражении if, то, скорее всего, что-то переписало их. – Halter

ответ

0

Когда вы объявляете переменную в области с областью (в вашем операторе if), они доступны только в if. объявить их до и установить их Whithin, как это:

$duration_selected = ''; 
$client_network = ''; 

if(isset($_POST['time_selected'])) 
{ 
    $duration_selected = $_POST['time_selected']; 
    //$duration_selected = "day"; 
    $client_network =$_POST['networkType']; 
} 
+0

Неверный. Если операторы/else имеют ту же область действия, что и окружающий код. Однако, если он не попадает в оператор if, он не будет определен. http://stackoverflow.com/questions/6243991/if-you-create-a-variable-inside-a-if-statement-is-it-available-outside-the-if-st – aynber

+0

Oh. спасибо, я думаю, узнал что-то :-) – Cashbee

0

Если вы используете $duration_selected и $client_network за пределами if(isset($_POST['time_selected'])) блока, то это будет неопределенным, если оно не выполняется, по крайней мере один раз.

Поэтому убедитесь, что код, который обращается к предыдущим двум переменным, работает внутри блока if, упомянутого выше.

Пример:

if(isset($_POST['time_selected'])) 
    { 

    $duration_selected = $_POST['time_selected']; 
    //$duration_selected = "day"; 
    $client_network =$_POST['networkType'] 

    $another_variable = $duration_selected + 'something'; // correct 
    } 

    $another_variable = $duration_selected + 'something'; // wrong 
+0

Неверно. Если операторы/else имеют ту же область действия, что и окружающий код. Однако, если он не попадает в оператор if, он не будет определен. Http: // StackOverflow.com/questions/6243991/if-you-create-a-variable-inside-a-if-statement-is-it-available-outside-the-if ​​ – aynber

+0

Вы сказали это ** Если это не ударит Если блок по крайней мере один раз, это означает, что эти переменные не определены, и об этом говорят здесь ** – Ismail

+0

Вы говорите, что они доступны только внутри блока IF. Это неверно. Если он попадает в блок IF, они определяются и используются в дальнейшем. Если он не попадает в блок IF, они не определены. В любом случае, это хорошая практика либо определить его раньше, также определить его в блоке else, либо использовать вместо него тройной. – aynber

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