2017-01-17 5 views
-1

PHPのコードをロードして応答するPHPページに値を渡そうとしています。私の問題は、返されたPHPコードが部分的に動作することです。ajaxでロードされたときにPHPの応答が部分的に動作する

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'] 
    } 

Iは、AJAXポストを受け取る

は、コードの最初の行内で行うことができます。私の問題は、後でコードの行があり、変数が値を失います(コードのさまざまな部分でエコーを試みましたが、最初の数行でのみ動作します)。

変数は、ハードコードしてPOST値を使用しないと値が保持されます。例:

$duration_selected = "day"; 

POST値の損失を引き起こす可能性のあるアイデアはありますか?

FULL 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> 

私は全くその時点エコーdoesntの表示を超え

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

までポスト値をアップしてエコーができます。

は解決:

私はときに私はそれが他の方法でラウンドすることになった意図何のためにif文の中にforeachループを置いていました。ありがとう

+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

ああ。ありがとう、私は推測、何かを学んだ:-) – Cashbee

0

あなたif(isset($_POST['time_selected']))ブロックの外側$duration_selected$client_networkを使用している場合は、それが少なくとも一度は実行されない限り、それは不定となります。

したがって、前の2つの変数にアクセスするコードが上記の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-if-if-if-available-st-if-stの場合 – aynber

+0

あなたはそれを言っています。少なくとも1回ブロックすれば、それらの変数が定義されておらず、それはここで話していることです** – Ismail

+0

あなたは、それらがIFブロック内でのみアクセス可能であると言います。それは間違っている。 IFブロックに当たった場合、それらは定義され、後でどこでも使用できます。 IFブロックにヒットしなかった場合、それらは定義されていません。いずれにしても、前に定義するか、elseブロックで定義するか、代わりに三項を使用するのが良い方法です。 – aynber

関連する問題