2011-07-18 116 views
0

所以這是我的想法,我的主頁上有一個登錄jquery對話框,阻止任何人使用網頁(在登錄表單對話框後面)。我使用ajax將輸入的信息提交給php頁面,然後檢查數據庫中是否存在用戶名/密碼組合。如果是這樣,我返回true,然後關閉對話框(允許訪問該網站)。Jquery Ajax PHP - 如何確定PHP代碼是否成功執行?

如何使用ajax來檢查我的php腳本(從執行頁面)返回true或false? 我假設ajax函數的成功/錯誤選項正在檢查這個,但下面的代碼似乎不起作用。

$('.login').dialog({ 
    closeOnEscape: false, 
    title: false, 
    modal: true, 
    width: 'auto', 
    show: {effect: "fade", duration: 1500}, 
    title: 'Login', 
    buttons: { 
     "Login": function() { 
      $.ajax({ 
       async: false, 
       type: 'POST', 
       url: 'sql/login.php', 
       success: function(){ 
        alert("Success!"); 
       }, 
       error: function(){ 
        alert("Failed!"); 
       }, 
       dataType: "html" 
      }); 
     } 
    } 
}); 
$(".login").dialog().parents(".ui-dialog").find(".ui-dialog-titlebar").remove(); 
+0

只是想扔掉那裏。如果用戶未被授權,您是否僅限制通過客戶端方法訪問內容(javascript)?如果是這樣,你會想重新思考,任何有Firebug的人都可以繞過你的安全。 – Adrian

回答

1

我所做的是把回聲在我的PHP與放在真或假的variabel結束時,我做了成功選項,這裏面的功能是這樣的:

success: function(response){ 
        if(response){ 
          alert("Success!"); 
          }else{ 
          alert("Failed!"); 
           } 

        } 

這個工作對我來說,你可以把這個在PHP

if($myvar){ 
$anothervar=1; 
}else{ 
$anothervar=0; 
} 
echo $anothervar; 

,所以你可以這樣做:

success: function(response){ 
        if(response==1){ 
          alert("Success!"); 
          }else{ 
          alert("Failed!"); 
           } 

        } 

這個我s表示我做的方式,它工作正常 希望它是有用的

+0

我試過了,沒有工作。總是返回'假'! – JimmyJammed

+0

然後,也許有一個問題,您的查詢到數據庫 – apz2000

+0

得到它的工作!謝謝! – JimmyJammed

1

否成功和錯誤選項與XHR請求的成功或失敗有關。你需要你的php腳本來輸出內容並檢查它。例如,如果你的PHP腳本輸出「OK」(即echo("ok");)如果驗證成功後,您可以使用一個Ajax請求,比如這個

$.ajax({ 
    url: 'sql/login.php', 
    success: function(data) { 
    if(data=="ok") { 
     alert('Login successfull.'); 
    } else { 
     alert('Login failed.'); 
    } 
    } 
}); 
0

在你的login.php:

if($_POST['data']){ 

     $curData = $_GET['country']; 
     $query = "SELECT * FROM yourTable 
        WHERE tblData = '$curData'"; 
     $result = mysql_query($query) or die; 

     if($result>0) 
       echo "<p class='checkExistance'>Data Exists</p>"; 
      else 
       echo "<p class='checkExistance'>Data doesnt Exist</p>"; 
    } 

在JavaScript:

function isSuccess(){ 
    if($('.checkExistance').text() === "Data Exists"){ 
      success($('.checkExistance').text()); //alert success! 
    }else{ 
      success($('.checkExistance').text()); 
    } 
} 

真的不檢查其是否正常工作,但你很可能得到的想法。在AJAX調用中,執行以下操作:

$.ajax({ 
    // 
    .. 
    success:isSuccess 

}); 

or 

success:function(){ 
    if($('.checkExistance').text() === "Data Exists"){ 
       success($('.checkExistance').text()); //alert success! 
     }else{ 
       success($('.checkExistance').text()); 
     } 
} 

請確保您在success()函數中實現alert()。

0

根據您的信息,我認爲你的PHP頁面會做一個驗證,你讓他們的PHP腳本

內返回true或false有您的代碼2個問題

貴國的PHP頁面將在自身返回true或false,在另一方面,除非你給他們出像人Tomm的,他們不會將結果發送到AJAX結果上面

2.success()和$ .ajax的錯誤()是由請求的成功決定NOT BY RESU LT這意味着,即使你的PHP回聲「假」,它會觸發success()事件,因爲請求已成功發送。