PHPとjQueryでajax検証とページリダイレクトを使用して基本フォームを構築しました。これは数日後にうまくいきました。私はそれに戻ってきて、アヤックスは動作を停止したようだ。現時点では、ajaxはテストvarをチェックしてデータをエコーバックしています。それは最初は正常に動作しているので、本当に私を悩ましています!新鮮な目が助けてくれることを願って、私は何かを目立たせることができないので、奇妙に見えます。JQuery Ajax - コードは今では機能しませんでしたか?
ajaxがデータの送信を停止しているので、submitをクリックし、ajaxが何も送信しないので、if()は何もしません!私は、フォームの値をうまく取得します。基本的なアヤックスやアラートを試してみると、何か変なことが起こっているようです。
はあなたが<form id="registerform">
<ul id="form">
<li>
<label for="email">Email:</label><span class="fieldbox"><input type="text" id="email"/></span>
</li>
<li>
<label for="confirmemail">Confirm Email:</label><span class="fieldbox"><input type="text" id="confirmemail"/></span>
</li>
<li>
<label for="password">Password:</label> <span class="fieldbox"> <input type="password" id="password"/></span>
</li>
<li>
<label for="confirmpassword">Confirm Password:</label> <span class="fieldbox"> <input type="confirmpassword" id="confirmpassword"/></span>
</li>
<input type="submit" id="register" value="Sign me up!"/>
</ul>
</form>
<div id="errorbox"></div>
jQueryのを助けることを願って:
$(document).ready(function(){
$("#register").click(function(){
var formvalues = [$("#email").val(), $("#confirmemail").val(), $("#password").val(), $("#confirmpassword").val() ];
var checklength = formvalues[2].length;
if(formvalues[0] == "" || formvalues[1] == ""){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Please complete email fields.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[2] == "" || formvalues[3] == ""){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Please complete password fields.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[0] != formvalues[1]){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[2] != formvalues[3]){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(checklength < 6 || checklength > 6){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password is too long.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
var datastring = 'email=' + formvalues[1] + '&password=' + formvalues[3];
$.ajax({
type: "POST",
url: "signup.php",
data: datastring,
success: function(data){
//see redirect script for stuff here
if(data != "error"){
window.location="http://localhost/creativetree/projectboard.php?id="+data;
}else{
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">User account already exists with that email.</p><div class="errormsgshodow"></div>');;
}
}
});
});
});//jquery end
//shake functions by Amit Dhamu
jQuery.fn.shake = function(intShakes /*Amount of shakes*/, intDistance /*Shake distance*/, intDuration /*Time duration*/) {
this.each(function() {
$(this).css({position:"relative"});
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
return this;
};
そして結果のための最小限のPHP:
<?php
if(isset($_POST['email'])){
$email = $_POST['email'];
$password = $_POST['password'];
if($email == "test"){
echo $email;
}else{
echo 'error';
}
}
?>
あなたは何がうまくいかないか言及するのを忘れました...、何がうまくいかないのですか? – gdoron
"Charles Proxy"を使って絞り込んでみてください。 "Charles"は、クライアントとサーバーの間でどのデータがやり取りされているかを判断するのに役立つ素晴らしいアプリです。少なくともこの方法では、送信するデータが有効であるかどうかを判断できます。送信されている場合は、サーバーがただちに盗み出されていないかどうかを判断します。 – Sitnam
申し訳ありませんajaxは動作を停止しました。フォームの値を取得しますが、ajaxを使用して送信すると、ifが応答を停止しているように応答しません。アラートで基本的なAjaxを試してみると、何もあまり効果がないようです。 – ChrisSherwood