2014-03-05 65 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的回答)