2015-05-14 51 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