簡體   English   中英

PHP AJAX調用中的響應為空

[英]Null response in PHP AJAX call

我在另一個通過AJAX加載PHP腳本的站點上具有有效的登錄腳本。 我似乎無法弄清楚為什么當我應該只是一個false或一個值數組時會得到一個空響應。

當我手動將值放入php腳本(硬編碼)時,它可以工作。 我可以在控制台中看到變量是從表單發送的。 但是,什么也沒有退還。 誰能發現我所缺少的東西?

感謝您的幫助或想法。

登錄PHP

<?php 
$login = $_POST['login'];
$password = $_POST['password'];

require_once("DB.php");
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 
mysql_select_db($db) or die ("Unable to select database!"); 

$query = "SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 
if (mysql_num_rows($result) > 0) { 
$output = "true";
     while(list($member_id, $firstname, $lastname, $login, $passwd, $City, $State, $bday, $approved, $organization, $school, $trainingdate, $Subscriber, $wscoordinator, $Position, $subdate, $enddate, $notice, $book, $trial)  = mysql_fetch_row($result)) { 
echo json_encode(array('memberid' => $member_id, 'firstname' => $firstname, lastname => $lastname, approved => $approved, subscriber => $Subscriber, position => $Position, school => $school, login => $login, book =>$book, ws => $wscoordinator, trial => $trial, enddate => $enddate));
}
} else {
$output = "false";
echo json_encode($output);
}


?>

AJAX,使用jQuery。

$('#loginForm #loginButton').click(function(){
        var $form = $('#loginForm'),
    $inputs = $form.find("input"),
    serializedData = $form.serialize();
    var login = $('#login').text('');
    var password = $('#password').text('');
    $.ajax({
      type: 'POST',
      url: 'Scripts/php/login.php',
      data: serializedData,
      success: function(response){
        console.log("Response: "+response);
        if(response != "false") 
        {
        //window.location.href='toolstart.html';
        $.cookie('lastname', response.lastname, { expires: 365, path: '/' });
        } else {
        alert("Your email and password combination did not match.");
        }

        },      
  dataType: 'json'
});    

(是的,我知道我需要離開MD5;只是還沒到那兒。)

只需替換.text(); .val()一樣的text()給出了文本輸入類型的空白結果。 val()將給出實際值。 其次使用var_dump($_POST); die; var_dump($_POST); die; 啊...檢查您的功能是否:

$('#loginForm #loginButton').click(function(){
        var $form = $('#loginForm'),
    $inputs = $form.find("input"),
    serializedData = $form.serialize();
    var login = $('#login').text('');
    var password = $('#password').text('');
    $.ajax({
      type: 'POST',
      url: 'Scripts/php/login.php',
      data: serializedData,
      success: function(response){
        console.log("Response: "+response);
        if(response != "false") 
        {
        //window.location.href='toolstart.html';
        $.cookie('lastname', response.lastname, { expires: 365, path: '/' });
        } else {
        alert("Your email and password combination did not match.");
        }

        },      
  dataType: 'json'
});**});**

我發現缺少一些花括號。 請使用您的var_dump($_POST);die;響應var_dump($_POST);die; 信息。

幾天后,我做了一些研究。 事實證明,我的客戶端正在使用的服務器僅支持PHP 5.1,而json_encode僅在5.1中受支持。 找到了這個很棒的腳本來使其工作。 http://www.boutell.com/scripts/jsonwrapper.html

感謝所有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM