2013-04-29 120 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,具体取决于值是否已保存。