2012-05-30 132 views
0

新的jQuery的,甚至是新的jQuery的Ajax調用 - 這裏是我的問題:jQuery的AJAX請求和PHP

我有一個小的形式 - 電子郵件地址,提交 - 是火到插入電子郵件到PHP文件表。

我要做到以下幾點:「成功」

  1. 處理通過Ajax的表單提交,所以沒有刷新
  2. 成功寫入表後,我想改變提交按鈕的文字持續3秒鐘,然後回到 使用淡入和淡出效果「註冊」。

這裏是我的表單代碼:

<form action="" id="registerform" name="registerform" method="post" > 
    <input type="text" id="email" name="email" value="Email Address" onClick="empty()" onBlur="determine()" /> 
    <button id="join" type="submit" name="join" onClick="validate()">Sign Up</button> 
</form> 

這是我在處理通過jQuery的POST請求可怕的嘗試:

$('form').on('submit', function(e) { 
    $.post('register.php', function() { 
      $('#join').html('Success!')    
    });   
    //disable default action 
    e.preventDefault(); 
}); 

如何使阿賈克斯人評論請求工作(似乎不是)?

在此先感謝!

更新

好吧,jQuery的以下塊添加數據表,但是,我的按鈕上的文字並沒有改變:

$('form').on('submit', function(e) { 
     $.post('register.php', $("#registerform").serialize(), function() { 
      $('#join').html('Success!')    
     });   
    //disable default action 
    e.preventDefault(); 
    }); 

任何想法呢?

+1

你會得到任何錯誤?最終輸出是什麼? –

+0

零錯誤和PHP文件正常工作,我已經測試了它獨立於Ajax請求,並且它成功寫入。 –

+0

按鈕文字是否被更改? –

回答

3

這裏是我的ajax的一個示例調用

details = "sendEmail=true&" + $("form").serialise(); 

$.ajax({ 
    url: "yourphppage.php", 
    type: "post", 
    data: details, 
    success: function (data, textStatus, jqXHR) { 
     if (data == "false") { 
      console.log("There is a problem on the server, please try again later");  
     } else { 
       //Do something with what is returned 
     } 
    } 
})   

和服務器端

if (isset($_POST['sendEmail'])) { 
    //Do something with the data 
} 

當然,這只是一個例子,你可能需要改變這適合您的需求:)

有一點需要注意的是if (data == "false")做什麼。那麼在服務器端我可以echo "false"告訴ajax調用它不成功。

+0

這種方式比POST輔助方法更具可讀性 - 在輔助方法中使用此格式有什麼缺點像POST和GET? –

+0

不是我所知道的:) – Undefined

+0

好的,我打算使用這種方法進行設置,看看我得到了什麼結果。 –

-1

你在Ajax調用中將表單數據推送到服務器的位置?將代碼更改爲此。

var data = {$("#email").val()}; 
$('form').submit(data ,function(e) { 
    $.post('register.php', function() { 
      $('#join').html('Success!')    
    });   
    //disable default action 
    e.preventDefault(); 
}); 
+0

這是一篇文章,而不是Ajax .... – bpeterson76

+0

使用http請求發送表單。與異步進程相同的東西。並按照代碼..不是話語。 –

+0

我提交此提交時出錯:缺少:屬性編號後 http://localhost/startupwinnipeg.htm 第59行 –

1

你實際上沒有發送任何數據到服務器。您需要使用$.post的'data'參數發送您的數據。

$('form').on('submit', function(e) { 
    $.post('register.php', $(this).serialize(), function() { 
     $('#join').html('Success!');    
    });   
    //disable default action 
    e.preventDefault(); 
}); 
+0

這有助於獲得ajax請求來完成,但是,HTML按鈕不會更改? –

+0

您可以嘗試打開您的網絡面板並確保請求成功完成。另外,嘗試在$ .post的成功回調中添加一個'console.log('success');'來查看是否實際調用了成功函數。 –

0

不確定,但POST請求是否發送任何東西?嘗試在POST請求中添加數據。

$('form#registerform').submit(function() { 
    var email = $(this).find('input[name=email]').val(); 
    $.post('register.php', {email: email}, function() { 
    $('#join').html('Success!');    
    }); 

    return false; 
});