2011-08-23 55 views
0

我正在開發Android項目的PhoneGap。我設計了一個登錄頁面,我想在其中顯示有效和無效用戶的警告框。我正在使用PHP進行數據庫驗證。如何在phonegap中處理jsonp的輸出?

這是我的PHP頁面:

<?php 
    header('Content-type: application/json'); 

    $server = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $database = "mymusic"; 

    $con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error()); 
    mysql_select_db($database, $con); 
    $id=$_GET["id"]; 
    $pass=$_GET["password"]; 
    //$id='ram'; 
    //$pass='ram'; 
    $sql = "SELECT id, name,password FROM login where userid='$id' and password='$pass'"; 
    $result = mysql_query($sql) or die ("Query error: " . mysql_error()); 

    $records = array(); 

    while($row = mysql_fetch_assoc($result)) { 
     $records[] = $row; 
    } 

    mysql_close($con); 

    echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');'; 
    ?> 

這是我的Java腳本函數:

function onDeviceReady(){ 
     var output = $('#output'); 
     var id = document.getElementById('userid').value; 
     var pass = document.getElementById('password').value; 
     // webcam.set_api_url('test.php?filename=' + escape(filename)); 

     $.ajax({ 
      url: 'http://192.168.1.214/sample/dologin.php?id='+id+'&password='+pass, 
      dataType: 'jsonp', 
      jsonp: 'jsoncallback', 
      timeout: 5000, 
      success: function(data, status){ 
       console.log('entered success============'); 
       $.each(data, function(i,item){ 

       var logi=item.id; 
       if(logi!=null) 
        alert("valid user"); 
       else 
        alert("invalid user"); 

       }); 

      }, 
      error: function(){ 
       console.log('entered success===================='); 
       output.text('There was an error loading the data.'); 
      } 
     }); 
} 

這不是一個無效的用戶正常工作。每當我輸入有效的用戶名和密碼時,它就會顯示有效的用戶消息框。當我輸入無效的用戶名和密碼時,它不顯示任何內容。

預先感謝您...

+2

只是一個評論 - 你不應該通過密碼作爲查詢字符串參數,因爲你的密碼透露給任何人誰想要嗅出他們。這些條目也存儲在Web服務器日誌文件中。如果要將密碼傳遞到服務器端,請發送密碼。 –

+0

耶先生,我想將密碼傳遞給服務器。感謝您的回覆。請告訴我,我應該適用什麼條件來使有效和無效用戶的警報框..? –

+0

@Kuntal,以及在服務器端,您是否對這樣的用戶這樣的密碼是正確的,那麼它是你的選擇中你怎麼換行的數據 - 畢竟,你可以發送到任何你想要的客戶端和在JavaScript中,你可以訪問數據。 –

回答

2

嘗試在瀏覽器中調試這或許從阿賈克斯的成功呼叫console.log(data)內返回的JSONP數據發送到控制檯。

這很可能是你的JSONP正在恢復一些數據,而不是爲空,即使這僅僅是undefined或空字符串。你的條件很可能是罪魁禍首。

+0

謝謝先生......我已經使用console.log(data)完成了它。這是 –