2013-01-12 51 views
0

下面的腳本工作正常,它結合了JavaScript和PHP。 通過按下按鈕我得到其數值(buttonValue = 20)和現有項目列表(A,B,C)是由該停止將新列表替換時$i <= 10(1,2,3 ... 10):JavaScript和PHP的組合

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 

    var buttonValue = $(':button').val(); 
    alert(buttonValue); 

    $("#City > option").remove(); // remove all items from list 
    <?php $i = 1; while ($i <= 10): ?> 
    $('<option><?php echo $i; ?></option>').appendTo('#Country select'); 
    <?php $i++; endwhile; ?> 
    }); 
}); 
</script> 

<body> 
    <button value="20">click to start</button> 
    <div id="Country"> 
     <select id="City"> 
     <option value="">A</option> 
     <option value="">B</option> 
     <option value="">C</option> 
     </select> 
    </div> 
</body> 

我想更改PHP循環,以代替$i <= 10,它將顯示$i <= $the_buttonValue(指定按鈕值以顯示數字1,2,3 ... 20)。

我試過jQuery AJAX功能:load(),get()ajax()方法,發送變量到服務器,但似乎並沒有解決上述請求。

我知道PHP和JavaScript的雙方溝通方式不同,也許AJAX請求可以獲得新的工作要求,但我不知道如何。

任何提示,使其按要求工作,將不勝感激。

+0

你爲什麼不只是使用JavaScript爲循環? – 0xJoKe

+0

哪裏?怎麼樣?你可以在你的問題更具體嗎? – blsn

+0

你如何設置按鈕的值(即'value =「20」')? – pete

回答

2

你不需要PHP的這個特定的問題,但如果你必須使用它的一些原因,那麼你可以使用jQuery負載()功能,如:

your.html

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 

    var buttonValue = $(':button').val(); 
    alert(buttonValue); 

    $("#City > option").remove(); // remove all items from list 
    $('#Country').load('your.php?value='+buttonValue+' #Country') 
    }); 
}); 
</script> 

<body> 
    <button value="20">click to start</button> 
    <div id="Country"> 
     <select id="City"> 
     <option value="">A</option> 
     <option value="">B</option> 
     <option value="">C</option> 
     </select> 
    </div> 
</body> 

your.php

<div id="Country"> 
     <select id="City"> 

<?php 
    $val = $_GET['value']; //this will be your button value 
    $i = 1; 
    while (true) 
    { 
?> 
     <option value=""> 
        <?php echo $i++; if($i==$val) break; ?> 
     </option> 
<?php 
    } 
?> 
     </select> 
</div> 

我第一次計算器的答案,希望大家會投了:)

+0

@ Arpit Singh,謝謝,但我無法在'your.html'中看到任何代碼調用'your.php' – blsn

+0

@ user203952: $('#Country')。load('your.php #Country'),jquery load()函數具有第一個參數作爲調用的URL,我現在將編輯它,你應該看看我增加值= 20內的網址,以協助內部php –

+0

GET,我會嘗試現在,讓你知道。 – blsn

0

我認爲最簡單的方法只是當按鈕被提交時將這些信息同時推送到你的Javascript變量和一個PHP變量;然後根據您的等效PHP變量的循環,因爲嘗試基於javascript值設置PHP變量和函數可能會更難以發佈AJAX數據並獲取JSON響應。

你也可以在javascript中做這個循環,但這都是關於你的偏好。將javascript變量推入PHP變量是很困難的,因爲在客戶端執行javascript時,PHP始終是服務器端處理的。

在JavaScript中做所有事情的一個例子是;而不是

<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 

    var buttonValue = $(':button').val(); 
    alert(buttonValue); 

    $("#City > option").remove(); // remove all items from list 
    var i = 1; 
    while(i <= buttonValue){ 
    $('<option>' + i + '</option>').appendTo('#Country select'); 
    i++; 
    } 
    }); 
}); 
</script> 
+0

@德文郡伯納德,我不明白你的建議,請你可以顯示你的意思的簡短代碼。 – blsn

+0

@ Devon Bernard,在原始代碼中,循環是一個PHP函數(<?php while(has_list_cities()){?>,我必須使用PHP循環。) – blsn

+0

@ user203952:我不完全確定你的意思因爲我沒有看到上下文代碼......但你應該能夠在你的PHP while循環中拋出這個java函數。 –

0

你不需要PHP都:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
    var buttonValue = $(':button').val(); 
    alert(buttonValue); 

    $("#City > option").remove(); // remove all items from list 
    for (var i = 0; i < buttonValue; i++) { 
     $('<option>' + i + '</option>').appendTo('#Country select'); 
    } 
    }); 
}); 
</script> 

<body> 
    <button value="20">click to start</button> 
    <div id="Country"> 
     <select id="City"> 
     <option value="">A</option> 
     <option value="">B</option> 
     <option value="">C</option> 
     </select> 
    </div> 
</body> 
+0

@ 0xJoKe,在原代碼中$ i被一個PHP函數(<?php echo your list_city_name();?>),所以我必須使用PHP($ i)。 – blsn