2012-03-12 14 views
1

私はページを更新せずにフォームをチェックできるAjaxスクリプトを持っています。しかし、フィールドが完全ではないかどうかを確認したいが、フィールドが完全であれば、ユーザーを新しいページに送信したい。Javascript/Ajaxで新しいページを読み込む

私はこれをどのように行うことができるのか分かりません。好きではない私は、各メッセージ「名前が見つからない」場合は、

function pass() 
{ 

// Real Browsers (chrome) 

if (window.XMLHttpRequest) 
{ 
    xhr = new XMLHttpRequest(); 
} 

// IE 

else if (window.ActiveXObject) 
{ 
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

//Store data 
var email = document.getElementById('email').value; 
var firstname = document.getElementById('firstname').value; 
var surname = document.getElementById('surname').value; 
var address1 = document.getElementById('address1').value; 
var address2 = document.getElementById('address2').value; 
var postcode = document.getElementById('postcode').value; 

//Open POST location 
xhr.open("POST","addUserSeminar.php"); 

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 

//Make object to store all data 
var obj = {email: email, firstname: firstname, surname: surname, address1: address1, address2: address2, postcode: postcode}; 

//Encode the data with JSON and send it to the server 
xhr.send("data=" + JSON.stringify(obj)); 

//Check return state and change "myDiv" 
xhr.onreadystatechange=function() 
{ 

    if (xhr.readyState==4) 
    { 
     document.getElementById("settingsDiv").innerHTML = xhr.responseText; 
    } 

} 

//Return false so form doesn't submit 
return false; 
} 

それはボックスが満たされている場合、私がチェックしたPHPファイルへのアウトデータを送信します。ここではAjaxのスクリプトです。しかし、すべてのデータが投稿されたら、データベースにレコードを追加してからtrueを返します。

私のAjaxスクリプトでそのリターンを拾うことができますので、新しいページに転送する場合はtrueをテストできます。

ありがとうございました。

+0

使用してみてください 'LOCATION.HREF = "新しい場所のURL" ' –

+1

あなた自身の魂を守るために、必ずしも必要でない場合は、自分でXMLHttpRequestを作成しないでください。 [jQuery.ajax](http://api.jquery.com/jQuery.ajax/)などを使用してください... – Marc

答えて

0

リターン成功した場合に、サーバ側から "TRUE" の文字列

PHPコード

if($valid_inputs) { // all input fields are valid 
    echo "TRUE"; 
} else { 
    echo "FALSE"; 
} 

クライアント側のJSコード

if (xhr.readyState==4) 
{ 
    if (xhr.responseText.indexOf("TRUE") > -1) { 
     window.location = "redirecturl.php"; //redirect url 
    } 
} 
+0

それは私のために働かなかった。他のアイデア? – ragebunny

+0

なぜ> -1ですか? – ragebunny

+0

PHPコードを共有できますか? – Nemoy

1

サーバから何かが返ってきて、完了したことを返して、if文のxhr.responseTextで読んでください。

if(xhr.responseText.indexOf("forward to next page") > -1){ 
    //forward 
} else { 
    //show error message 
} 

あなたはちょうど行うにWAHTするオブジェクトを確認する可能性があるので、エラーや成功メッセージを返すようにJSONオブジェクトを使用する場合、それは多くの方が良いだろう。

if(xhr.responseText.indexOf("SUCCESS") >= 0) { 
    window.location.href = NEW_URI; 
} else { 
    document.getElementById("settingsDiv").innerHTML = xhr.responseText; 
} 

あなたonreadystatechangedで

1

、readyStateのの== 4ブロックの場合は...あなたのPHPスクリプトが空白のフィールドを持つFAILURE対SUCCESSを示すために、一意の文字列を返してもらいます。

関連する問題