2013-04-29 124 views
0

我有以下功能,我想將變量「Quantity」分配給使用Ajax的php變量,但是我對ajax並不瞭解太多,請給我能完成這項工作的代碼。由於如何使用ajax將javascript變量分配給php變量

var Quantity; 
$("select").change(function() { 
    var str = ""; 
    var price = <?php echo $row[price];?>; 
    $("select option:selected").each(function() { 
    str += $(this).text() + " "; 
    }); 
    $(".plan_price").text("price : " + parseInt(str) * price + " baht"); 
    Quantity = parseInt(str); 
}).change(); 

function selectOne() { 
    var select = document.getElementById('quantity'); 
    for (var i=0; i<<?php echo $row[item_amount]?>; i++) { 
    select.options[select.options.length] = new Option(i+1, i); 
    } 
} 

我想要的數量變量從$行[item_amount]中減去從服務器

if ($row[item_amount] - Quantity == 0) { 
    $sql = "update item set active='2',item_amount=item_amount-Quantity,buy_time=NOW() where id='$id'"; 
} else { 
    $sql = "update item set item_amount=item_amount-Quantity,buy_time=NOW() where id='$id'"; 
} 
$result = mysql_query($sql); 
+2

Java **不是** JavaScript。 – 2013-04-29 00:09:54

+0

谷歌關於JavaScript&POST方法 – 2013-04-29 00:11:56

+0

我發現最好的方法是從你的PHP中分離HTML/JS/CSS。我不會從我的PHP生成「代碼」。我使用php作爲ajaxing的「數據源」。代碼應該是靜態的,我還沒有找到一個原因代碼應該是動態的(除了插​​件),而不是「打動」某人。 – Rahly 2013-04-29 00:55:11

回答

0

補充一點:

您的javascript:

... 
Quantity = parseInt(str); 
$.ajax({url:"yourphp.php",type:"POST",async:false,data:{quantity:Quantity}}); 

您的PHP裏:

... 
$Quantity = $_POST["quantity"]; 
if ($row[item_amount] - $Quantity == 0) { 

我不知道你的mysql查詢中的「Quantity」是否指向由javascript發送 的$ Quantity;如果是,那麼在那裏添加$前綴。

0

有辦法。您可以使用PHP會話變量來執行此操作。您可以使用下面的代碼片段來保存一個POST變量並將其保存爲一個PHP會話變量。

<?php 

header('Content-Type: application/json; charset=UTF-8'); 

session_start(); 

if ($_POST['foo'] == true) { 
    $_SESSION['foo'] = $_POST['foo']; 
    echo json_encode(true); 
} 
else { 
    echo json_encode(false); 
} 

?> 

現在你需要你的JavaScript來連接和PHP腳本,它看起來像你使用jQuery了,所以我們會做這樣的:

$.post('/_/ajax/init_session.php', { foo: 'bar' }, function(data) { 
    console.log(data); 
}, json); 

的JS上面的代碼片段要求PHP腳本將$_SESSION['foo']保存爲'bar'。收到數據後,瀏覽器的JavaScript控制檯將顯示truefalse,具體取決於值是否已保存。