2015-05-14 129 views
1

我正在構建一個連接到數據庫的Web應用程序,該數據庫存儲了一些變量,這些變量是網站正常運行所必需的。使用AJAX從MySQL獲取

現在我使用PHP來連接和獲取信息,但最終使用.html文件會更容易,所以我打算使用AJAX來獲取信息。

我有這樣的代碼:

$(function() 
    { 
    $.ajax({          
    url: 'api.php',     
    data: { 
     paramName: $("#partyIDInput").val() 
    }, 
    method: post,    
     dataType: 'json',   
     success: function(data)   
     { 
     var id = data[0];  
     var pID = data[1];  
     var pLOC = data[2];  
     var pNAME = data[3]; 
     var pFORMID = data[5];  
     var pFORMSONG = data[6];  
     var pFORMARTIST = data[7];  
     var pFORMNAME = data[8];  

     $('#partyTitle').append(""+pNAME+""); 
     } 
    }); 
    }); 

它通過api.php其獲取所有變量是這樣的:

<?php 

$db = new PDO('mysql:host=xxxxx;dbname=xxxxx;charset=utf8', 'xxxxx', 'xxxxx'); 

$partyInput = $_POST['paramName']; 

$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID = $partyInput"); 

$stmt->execute(array($_POST['paramName'])); 

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

?> 

但我的問題是,我有一個文本在網頁上輸入,當用戶在其中寫入「partyID」並單擊繼續時,我希望腳本從具有該ID的行中獲取信息。現在它只是從第一排中取出。

我從來沒有使用過AJAX,所以如果你有時間,請解釋發生了什麼。

在此先感謝。

編輯:

這裏的輸入,注意,我還沒有在CSS方面優化的網頁呢。

<form style="margin-top:150px;" method="post" action=""> 
       <div class="list-block"> 
       <ul> 
        <li class="item-content" style="background: #fff;margin-bottom: -26px;"> 
        <div class="item-inner"> 
         <div class="item-input"> 
         <input style="text-align:center;padding:0;" type="text" name="partyID" placeholder="Ange PartyID"> 
         </div> 
        </div> 
        </li> 
       </ul> 
       </div> 
       <div class="list-block"> 
       <ul> 
        <li> 
         <input type="submit" name="submit" value="Festa p&aring;!" class="login_bttn" style=" background: none;color: white;border: 1px solid white;border-radius: 500px;width: auto;margin-left: auto;margin-right: auto;margin-top: 40px;"></input> 
        </li> 
       </ul> 
       <div class="list-block-labe"></div> 
       </div> 
      </form> 
+3

請,[停止使用'mysql_ *'功能](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。瞭解[準備的陳述](http://en.wikipedia.org/wiki/Prepared_statement),並考慮使用PDO,[它不像你想象的那麼難](http://jayblanchard.net/demystifying_php_pdo.html) 。你不發送任何東西給PHP腳本。 –

+0

你的文字輸入在哪裏? –

+0

這不是完整的頁面,只是與db有關的部分。我會添加輸入, –

回答

2

首先,要開關傳遞額外的參數,更新data: "",

data: { 
    paramName: $("#idOfField").val() 
}, 

其次,作爲周杰倫布蘭查德提到的,PDO

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 

$stmt = $db->prepare("SELECT * FROM playr_partyID_db WHERE partyID =?"); 

$stmt->execute(array($_POST['paramName'])); 

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
+0

好吧,我已經改爲PDO。 –

+0

@ 9focuspoints您是否需要幫助? –

+0

我很抱歉,但我無法讓它工作。我將原始文章中的代碼更新爲現在的內容。 –

3

你必須在AJAX調用送東西 -

$(function() 
    { 
    $.ajax({          
     url: 'api.php',     
     data: "", // needs to contain the data you want to send 
     method: post, // you also need a method 

一旦你這樣做,你要發送的變量將可在$_POST陣列的PHP的,並可以包括那些變量的SQL查詢。這是一個basic AJAX guide這應該讓你的事情更清晰。

另外你應該stop using mysql_* functions。他們不再保持和officially deprecated。請改爲了解prepared statements,並考慮使用PDO,it's not as hard as you think