2013-09-01 86 views
1

這可能是個不好意思的問題,因爲我現在正在學習PHP,jquery/ajax,甚至是javascript。我無法將一個變量傳遞給PHP來查詢MYSQL服務器。我傳遞變量給JavaScript函數在以下HTML中newCharacter.php:未定義索引PHP Ajax jquery post

Choose your name:<input type='text' id='name' 
      onchange="verifyName(this.value)"> 

然後我嘗試通過下面的代碼,將其發送到PHP頁面。

function verifyName(name) { 
    $.ajax({ 
     url: "Classes/pc.php", 
     type: "POST", 
     data: { 
      'name': name 
     } 
    }); 

    <? php 
    echo pc::nameTaken($_SESSION['name']).';'; ?> 

} 

但是我得到的頁面的源代碼以下錯誤:

var result = 0; 
      <br /> 
<b>Notice</b>: Undefined index: name in 
<b>D:\Server\htdocs\dungeonexplorers\newCharacter.php</b> 
on line <b>33</b><br /> ;     

我在做什麼錯?據我所知,POST會話變量沒有正確傳遞。

編輯:將PC類(相關部分)

public static function nameTaken($name) 
{ 
    try{ 
     $db = DBConnect::connect(); 
     $result = $db->prepare('SELECT name     
      FROM pc WHERE name=:name LIMIT 1'); 
     $result->bindParam(':name',$name); 
     $result->setFetchMode(PDO::FETCH_ASSOC); 
     $result->execute(); 
     $return = $result->fetchAll(); 

     if ($return) 
     { 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    catch (PDOException $e) 
    { 
     Echo 'PDO error: ' . $e->getMessage() . '<br>'; 
    } 
    catch (Exception $e) 
    { 
     Echo 'General Error retrieving username and password.<br>'; 
    } 
} 
+0

請向我們顯示newCharacter.php行28-38 – Itay

+0

這就是它。我只是刪除警報來嘗試和調試。 – jigglylizard

回答

1

不是一個真正的答案退房http://php.net/manual/en/reserved.variables.post.php,但我只是想指出,

$return = $result->fetchAll(); 

    if ($return) 
    { 
     return true; 
    } 
    else{ 
     return false; 
    } 

是一種毫無意義的,你基本上是說:如果返回真這是真的..如果它是假的,返回假,你可能只是立即返回$回報$ return,因爲它是一個布爾:)

但我恐怕它沒有任何關係與你的問題。

但是,你在一起JavaScript和PHP混合?它在您的第一個代碼示例中顯示如此。你還應該利用.success,.complete,.failure等等,這可以幫助你看到你從ajax調用得到的響應會發生什麼。

+0

我在JavaScript中有一些PHP來調用PHP函數,它將在服務器上運行MYSQL查詢並返回結果。然後JavaScript的其餘部分將結果應用於頁面上的HTML。 我正在添加成功和失敗,看看會發生什麼。 我會修改以返回$回報。很好的接收。 – jigglylizard

+0

這不是你想要做的,你永遠不想混合php和javascript。你想要pc.php只包含php代碼並執行與JavaScript所說的相對應的行爲。一旦從ajax調用返回,就不應該執行php代碼。 – Jonast92

+0

所以,你想要做的每個查詢都有一個PHP頁面? – jigglylizard

2

歡迎web開發:)

POST體變量均包含在全局變量$ _POST。嘗試切換$ _SESSION到$ _POST,看看是否有幫助。

您可以獲取更多信息

+0

我覺得不知道這個愚蠢!我試過,但仍然得到相同的錯誤。 – jigglylizard

+0

你可以發佈你的電腦班的代碼?我想看看正在做什麼名字。 – benashby

+0

編輯:我會提醒(名稱)或console.log(名稱)在您的jquery,以確保變量正確通過 – benashby