2014-03-05 66 views
1

我尝试在php中使用ajax发送数据,但是我使用了一个关于jQuery的点击(在发送数据的按钮上,而quantity > 1),但是我有一个错误,php不能识别我的两个变量:namenbAJAX JQUERY变量

这是我JQUERY/AJAX:

$('.btn-circle').on('click', function(){ 
    var name = $('.quantite').attr('name'); 
    var nb = $('.quantite').text(); 
}); 

$('#form_top_ten').submit(function() { 
    if(nb>=1){ 
     $.ajax({ 
      type: "POST", 
      url: "handle_form/commande.php", 
      data: {nb:nb,name:name} 
     }); 
    } 
    return false; 
}); 

,这我的PHP:

<?php 
    session_start(); 
    require_once '../includes/config.inc.php'; 

    $id_user = $_SESSION['id_user']; 
    $quantite = $_POST['nb']; 
    $article = $_POST['name']; 

    if(isset($quantite)){ 
     $req = $connection->prepare('INSERT INTO commande_articles(id_user,quantite,article) VALUES(:id_user,:quantite,:article)'); 
     $req->execute(array(
      'quantite' => $quantite, 
      'article' => $article, 
      'id_user' => $id_user 
      )); 
    } 
    else { 
     echo('erreur'); 
    } 
?> 
+5

您正在一个函数中创建变量,然后尝试在另一个函数中访问它们。它是不同的范围。 – barell

+0

是的,谢谢我知道,但我不知道如何重新使用这个变量 –

回答

3

定义在更高范围的变量。试试这个:

var name,nb; 
$('.btn-circle').on('click', function() 
{ 
    name = $('.quantite').attr('name'); 
    nb = $('.quantite').text(); 
}); 
2

在javascript中,变量有函数作用域。这意味着,你的变量name和nb在一个匿名函数中,因此它们在外面不可用。最快的解决方法是从变量声明中删除“var”关键字。这将使这些变量的范围立即全局化,并且您的代码应该可以工作。

一个整齐的解决方案,但是,这是宣布他们的匿名函数外,然后将函数内引用它们 - 这样一来,您对这些变量的范围更多的控制权(参见上述Siamak的回答)