2012-04-01 30 views
0

我試圖讓jQuery的阿賈克斯()發送發送到表單值:值不被髮送到MySQL數據庫從阿賈克斯

    <form method="post" id="FanDetail"> 
         <label for="bio">Brief Bio<br /></label> 
          <textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea><br /> 
         <label for="dob">Date of Birth<br/></label> 
          <input id="dob" name="fan_dob" value="(e.g. 01/05/1965)" onFocus="clearText(this)" /><br />  
         <label for="zip">Location<br /></label> 
          <div class="ui-widget"> 
           <input id="zip" name="term" value="What is your Zipcode?" onFocus="clearText(this)" /><br /> 
           <input id="actualZip" type="hidden" name="actualzipval" value="" /> 
          </div><!--ui-widget :: zip --> 
         <label for="occup">Occupation<br /></label> 
          <div class="ui-widget"> 
           <input id="occup" type="text" name="term2" value="e.g. Computer Programmer, etc" onFocus="clearText(this)" /><br /> 
           <input id="actualOccup" type="hidden" name="actualOccupval" value="" /> 
          </div><!--ui-widget :: occup --> 
         <label for="fbkurl">Facebook Handle&nbsp;[?]<br /></label> 
          <input id="fbkurl" type="text" name="fan_fbk" value="e.g. SportsFan12" onFocus="clearText(this)" /><br /> 
         <label for="twiturl">Twitter Handle&nbsp;[?]<br /></label> 
          <input id="twiturl" type="text" name="fan_twit" value="e.g. AboutSports2012" onFocus="clearText(this)" /><br /> 
         <label for="phoNum">Phone Number<br /></label> 
          <input id="phoNum" type="text" name="fan_pho" value="cell or home phone" onFocus="clearText(this)" /><br /> 
        <input style="background-image:url('img/save.png');" type="submit" name="saveAbout" value="" id="submit" /> 
        </form> 
<div class="success" style="display:none;">Got it!</div> 

HTML連接到JS文件submitvalues.js

//////////////// About Tab 
$(document).ready(function(){ 
    $("form#FanDetail").submit(function() { 
    // store the values from the form input box, then send via ajax below 
    var bio = $('#bio').val(); 
    var dob = $('#dob').val(); 
    var zip = $('#actualZip').val(); 
    var occup = $('#actualOccup').val(); 
    var fbkurl = $('#fbkurl').val(); 
    var twiturl = $('#twiturl').val(); 
    var phoNum = $('#phoNum').val(); 
    $.post(
      "../src/php/registration/about/submitvalues_about_tab.php", 
      $("form#FanDetail").serialize(), 
      function(){ 
       $('form#FanDetail').hide(function(){ 
        $('div.success').fadeIn(); 
      }); 
      }); 
     return false; 
    }); 
}); 

這個JS文件,然後連接到一個PHP腳本,通過PDO發送到mysql 已更新PHP:

/////////////////////////////////////////////// 
######## Get Input to Submit ############## // 
/////////////////////////////////////////////// 
$fanBio = $_POST['bio'];    ////// 
$fanDob = $_POST['dob'];    ////// 
$zipval = $_POST['zip'];    ////// 
$occupval = $_POST['occup'];   ////// 
$facebookurl = $_POST['fbkurl'];   ////// 
$twitterurl = $_POST['twiturl'];   ////// 
$phoneNum = $_POST['phoNum'];  ////// 
$fanID = 1; 
/////////////////////////////////////////////// 

try{ 
    ## Get current user and their session ID: 
    $sessionvar = session_id(); 
    ### DB Connection already established above. 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    // INSERT CLEAN DATA INTO TABLE… 
    $sth = $dbh->prepare(" 
    UPDATE Fan 
    SET fanBio=?,fanDob=?,fanDetLocID=?,occupID=?,fanFbk=?,fanTwit=?,fanPho=? 
    WHERE fanID = ? 
    "); 
    $sth->bindValue(1,$fanBio); 
    $sth->bindValue(2,$fanDob); 
    $sth->bindValue(3,$zipval); 
    $sth->bindValue(4,$occupval); 
    $sth->bindValue(5,$facebookurl); 
    $sth->bindValue(6,$twitterurl); 
    $sth->bindValue(7,$phoneNum); 
    $sth->bindValue(8,$fanID); 
    $sth->execute(); 
    $count = $stmt->rowCount(); // check row count 
    $sth->debugDumpParams(); ## debugging query 
} 

錯誤我得到:。它說我填寫完所有的input s Got it!,因此它已經開除了.success課程。

我想:

  • 在通過mysql的這個信息手動輸入 - 正常工作。
  • 運行的JavaScript控制檯來調試,它是好的發送它的JS結束,因爲我得到這個,當我點擊發送按鈕: img

當我填寫輸入和看在網絡 - >響應我得到的php文件JS控制檯:

SQL: [107] 
    UPDATE Fan 
    SET fanBio=?,fanDob=?,fanDetLocID=?,occupID=?,fanFbk=?,fanTwit=?,fanPho=? 
    WHERE fanID = 1 

Params: 7 
Key: Position #0: 
paramno=0 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #1: 
paramno=1 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #2: 
paramno=2 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #3: 
paramno=3 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #4: 
paramno=4 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #5: 
paramno=5 
name=[0] "" 
is_param=1 
param_type=2 
Key: Position #6: 
paramno=6 
name=[0] "" 
is_param=1 
param_type=2 

應該$sth->execute();有它的所有綁定PARAMS作爲一個數組?

+0

爲什麼不使用只是一個jQuery AJAX功能,而不是後 – 2012-04-01 23:19:40

+0

你介意展示上面使用我的代碼的示例? – CodeTalk 2012-04-01 23:23:58

回答

0

嘗試以下我希望這將張貼在這裏是一個更詳細的教程哦,它是如何工作

http://api.jquery.com/jQuery.ajax/

$(document).ready(function(){ 
     $("form#FanDetail").submit(function() { 
     // store the values from the form input box, then send via ajax below 
     var bio = ; 
     var dob = $('#dob').val(); 
     var zip = $('#actualZip').val(); 
     var occup = $('#actualOccup').val(); 
     var fbkurl = $('#fbkurl').val(); 
     var twiturl = $('#twiturl').val(); 
     var phoNum = $('#phoNum').val(); 
        $.ajax({ 
        type: "POST", 
        url: "../src/php/registration/about/submitvalues_about_tab.php" 
        data: "bio=" + bio + "&dob=" + dob +"&zip=" + zip + "&occup=" + occup  +"&fbkurl=" + fbkurl + "&twiturl=" + twiturl +"& phoNum=" + phoNum, 
        }).done(function(msg) { 
        $('div.success').fadeIn(); 
       }); 
      return false; 
     }); 
    }); 
+0

對不起,更改JS不起作用。請參閱上面的更新錯誤 – CodeTalk 2012-04-02 00:29:44

+0

它似乎是一個錯誤的PHP文件? – CodeTalk 2012-04-02 00:31:59

+0

偏題:爲什麼不用序列化表單呢?它更乾淨。 http://api.jquery.com/serialize/ – Flukey 2012-04-02 00:35:28