2014-11-06 284 views
0

我使用Phonegap創建了一個android應用程序。我在000webhost中創建了一個帳戶,並在服務器上添加了我的PHP文件。在phpMyAdmin中,我創建了我的數據庫。通過Ajax獲取的變量爲空(Phonegap-Ajax-Json-PHP-MySQL)

對,現在我試圖將我的項目與在線數據庫連接起來,並在其中插入或檢查一些數據。


問題

  1. 當我運行在我的手機我得到的代碼success: ...部分該警報在AJAX應用程序:
    There is no such username
    (我的PHP曾在評論所有echo,除了:echo json_encode

  2. 當我加入這一行(var_dump($_POST);)之後我從阿賈克斯得到$username在PHP和運行我的應用程序,我看到這個提醒:
    array(1){ [\"username\"]=> string(2) \"hi"\" }

  3. 當我將這些行:if (empty($username)) { echo '...' },我跑我的應用程序後,我看到的是,在阿賈克斯的error: ...部內的警報,它印在echo,它是此if內。所以,$username肯定是空的。


這是我 JavaScript文件:
(我得到正確肯定所有的值從 html如此專注於代碼兩個阿賈克斯部分)

document.addEventListener("deviceready", onDeviceReady, false); 

    // PhoneGap is ready 
    function onDeviceReady() { 
     var el = document.getElementById("register"); 
     el.addEventListener("click", Register, false); 
    } 

function Register() { 
    var username = document.getElementsByName('username')[0]; 
    var password = document.getElementsByName('password')[0]; 
    var email = document.getElementsByName('email')[0]; 

    var strong_flag_user = 0; 
    var user = username.value; 

    if (username.value == "") { 
    $("#username").focus(); 
    document.getElementById('username').style.boxShadow = "0 0 7px #f00"; 
    navigator.notification.vibrate(500); 
    } 
    else{ 
    $.ajax({ 
      url: "http://www.guidemeforall.freeiz.com/phps/check_for_dublicates/check_username.php", 
      type: "POST", 
      crossDomain: true, 
      data: { username: user }, 
      dataType:'json', 
      success: function(response){ 
       if (response.status == 'success') { 
        alert(response.message); 
        document.getElementById('username').style.boxShadow = "none"; 
        strong_flag_user = 1; 
       } 
       else if (response.status == 'error') { 
        alert(response.message); 
        navigator.notification.alert("This username is already taken! Please use another one!", null, 'Username', 'Okay'); 
        document.getElementById('username').style.boxShadow = "0 0 7px #f00"; 
        navigator.notification.vibrate(500); 
        strong_flag_user = 0; 
        //window.location("main.html"); 
       } 
       else { 
        alert("error");      
        strong_flag_user = 0; 
       } 
      }, 
      error: function(error){ //function(error){ 
       alert(JSON.stringify(error)); 
       strong_flag_user = 0; 
       //window.location = "main.html"; 
      } 
    }); 
    } 

    //>5 characters, 1 upper case, at least 1 lower case, at least 1 numerical character, at least 1 special character 
    var passExp = /(?=^.{6,15}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*/; 
    var strong_flag_pass = 0; 

    if (!(password.value.match(passExp))) { 
    $("#password").focus(); 
    document.getElementById('password').style.boxShadow = "0 0 7px #f00"; 
    navigator.notification.alert("Please enter a strong Password! It has to have at least: 6 characters, 1 upper case, 1 lower case, 1 numerical character and 1 special character!", null, 'Password', 'Okay'); 
    navigator.notification.vibrate(500); 
    strong_flag_pass = 0; 
    } 
    else{ 
    document.getElementById('password').style.boxShadow = "none"; 
    strong_flag_pass = 1; 
    } 

    var emailExp = /^[email protected][^\.].*\.[a-z]{2,}$/; 
    var strong_flag_email = 0; 

    if (!(email.value.match(emailExp))) { 
    $("#email").focus(); 
    document.getElementById('email').style.boxShadow = "0 0 7px #f00"; 
    navigator.notification.alert("Please enter a correct Email!", null, 'Email', 'Okay'); 
    navigator.notification.vibrate(500); 
    strong_flag_email = 0; 
    } 
    else { 
    document.getElementById('email').style.boxShadow = "none"; 
    strong_flag_email = 1; 
    } 

    var gender; 
    if (document.getElementById("gender").value == "female") 
    gender = 'F'; 
    else 
    gender = 'M'; 

    var about_you = document.getElementById("about_you").value; 

    var age = document.getElementById("radio-choice").value; 

    if (document.getElementById('radio-choice-1').checked) { 
    age = document.getElementById('radio-choice-1').value; 
    } 
    else if (document.getElementById('radio-choice-2').checked) { 
    age = document.getElementById('radio-choice-2').value; 
    } 
    else if (document.getElementById('radio-choice-3').checked) { 
    age = document.getElementById('radio-choice-3').value; 
    } 
    else if (document.getElementById('radio-choice-4').checked) { 
    age = document.getElementById('radio-choice-4').value; 
    } 
    else if (document.getElementById('radio-choice-5').checked) { 
    age = document.getElementById('radio-choice-5').value; 
    } 

    else if (document.getElementById('radio-choice-6').checked) { 
    age = document.getElementById('radio-choice-6').value; 
    } 

    if (strong_flag_user == 1 && strong_flag_pass == 1 && strong_flag_email == 1){  
    //add to db 
    register_db(email.value, password.value, username.value, gender, about_you, age); 
    } 
} 

function register_db(em, pass, user, gend, about, ag) { 
    $.ajax({ 
      url: "http://www.guidemeforall.freeiz.com/phps/sign-up.php", 
      type: "POST", 
      crossDomain: true, 
      data: { username:user, password:pass, email:em, gender:gend, about_you:about, age:ag }, 
      dataType:'json', 
      success: function(data) 
      { 
       if (data.status == 'success') 
       { 
         alert("Success!"); 
       } 
       else if (data.status == 'error') 
       { 
         alert("Failure!"); 
       } 
      } 
    }); 
} 


這是我 PHP其中我檢查用戶名是否已存在的文件(用戶名=主鍵):

<?php 

     header('Content-type: application/json'); 
     header('Access-Control-Allow-Origin: *'); 

     //require_once('../database_config.php'); 

     $server = "my***.000webhost.com"; 
     $database = "a1****37_guideme"; 
     $username = "a1****37_guideme"; 
     $password = "*****"; 

     $con = mysql_connect($server, $username, $password); 

     // if($con) { //echo "Connected to database!"; } 
     // else { //echo "Could not connect!"; } 

     mysql_select_db($database, $con); 

     $topost = file_get_contents('php://input'); 

     $thedata = json_decode($topost, true); 

     $username = $thedata['username']; 
     //var_dump($_POST); 

     //if (empty($username)) { 
     //  echo 'The username is either 0, empty, or not set at all'; 
     //} 

     $sql = "SELECT COUNT(*) as Count FROM `user` WHERE `username`='$username'"; 

     $result= mysql_query($sql, $con); 

     $rows = mysql_fetch_array($result); 

     $count = $rows['Count']; 

     if (!$result) { 
     die('Error: ' . mysql_error()); 
     //$response_array['status'] = 'error'; 
     //echo json_encode($response_array); 
     } 
     else { 
     if ($count == 0) { 
      echo json_encode(array('status' => 'success','message'=> 'There is no such username')); 
      //$response_array['status'] = 'success'; 
      //echo json_encode($response_array); 
     } 
     else 
     { 
      echo json_encode(array('status' => 'error','message'=> 'The username already exists')); 
      //$response_array['status'] = 'error'; 
      //echo json_encode($response_array); 
     } 
     } 

     mysql_close($con); 
    ?> 


這是 PHP文件中,我試圖插入新的條目在我的數據庫(我的憑據是肯定正確的):

<?php 

    header('Content-type: application/json'); 
    header('Access-Control-Allow-Origin: *'); 

    //require_once('database_config.php'); 

    $server = "mys****.000webhost.com"; 
    $database = "a***37_guideme"; 
    $username = "a***37_guideme"; 
    $password = "******"; 

    $con = mysql_connect($server, $username, $password); 

    // if($con) { //echo "Connected to database!"; } 
    // else { //echo "Could not connect!"; } 

    mysql_select_db($database, $con); 

    $topost = file_get_contents('php://input'); 

    $thedata = json_decode($topost, true); 

    $username = $thedata['username']; 
    $password = $thedata['password']; 
    $email = $thedata['email']; 
    $gender = $thedata['gender']; 
    $age = $thedata['age']; 
    $about_you = $thedata['about_you']; 

    $sql = "INSERT INTO user (username, password, email, gender, age, about_you) "; 
    $sql .= "VALUES ('$username', '$password', '$email', '$gender', '$age', '$about_you')"; 

    if (!mysql_query($sql, $con)) { 
     die('Error: ' . mysql_error()); 
     // $response_array['status'] = 'error'; 
     // echo json_encode($response_array); 
    } 
    else { 
    echo json_encode(array('status' => 'success','message'=> 'No problem')); 
    // $response_array['status'] = 'success'; 
    // echo json_encode($response_array); 
    } 

    mysql_close($con); 
?> 

+1

而不是'alert',請嘗試'console.log(error)',並在控制檯窗口中查看該對象。 – itachi 2014-11-06 03:02:29

+0

或警報(JSON.stringify(error)); – jcesarmobile 2014-11-06 07:32:39

+0

@itachi,關於'console.log(error)'我在哪裏可以看到它的輸出? @jcesarmobile我會嘗試一下 – Marialena 2014-11-06 08:52:53

回答

0

我的問題,通過改變我得到的方式解決在我的PHP數據 - >$user = $_POST['username'];而不是與Json的方式(json_decode等)。