2012-01-18 34 views
0

我有一個窗體,我根據用戶選擇部分加載。jQuery if()工作不好,要求空的ajax響應

當用戶選擇一個日期時,我搜索當天可用庫存的qtty(這是火車旅行的座位)。

我有3個IF()句子

  • 首先,我問,如果數據庫響應不返回任何行(所以在這個時間旅行尚未建立,所以我必須在那一刻的創建要保留的客戶)
  • 其次,我問如果回覆是一個數字(我只返回一個數字,對不起,如果我以前沒有指定),如果它大於零。所以我更新可用的qtty。所以顧客不能購買不存在的座位。
  • 第三也是最後一項,如果其他人失敗且qtty爲零,我只是向客戶發送一條消息,指出在該日期旅行已滿,他/她必須選擇不同的旅行日期。

我的代碼是這樣的:

$.post(url,function(data){ 
     //******************** 
     //data = parseInt(data); 
     alert("muestra: "+data+"."); 
      //3 opciones 
     //si viene vacia la respuesta, es por que no encontro, reservas o sea que nadie a reservado para la fecha solicitada 
     //  lo que sigue es crear la reserva de todas formas, luego re-consultar por los valores y traer la cantidad total //podria mejorar 
     //si viene con 0 es por que no existe disponibilidad para el viaje en esa fecha, tendra que intentar cambiando categoria (vagon) o fecha 
     //si un numero >=1 hay disponibilidad y se crean los sliders que le permiten seleccionar la cantidad de asientos para reservar 
     //TODO: cambiar al switch .... 
     if(data=="false" || data==false){ 
     //if(data=='NaN'){ 
      $("#info-disponibilidad").html("No existen reservas previas, sera el primero en reservar para esta fecha. Asientos Disponibles: "); 
      $("#info-disponibilidad").css("color","green"); 
      var myRandom=parseInt(Math.random()*99999999); // tecnica cache buster 
      //url = 'asientos-disponibilidad.php?categoria='+$('#categoria option:selected').val()+'&fecha_reserva='+$('#fecha_reserva').val()+'&rand=' + myRandom; 
      url = 'crear_reservas.php?viaje='+$('#viajes option:selected').val()+'categoria='+$('#categoria option:selected').val()+'&fecha_reserva='+dateText+'&rand=' + myRandom; 
      $.post(url,function(data2){ 
       //algo algo con la respuesta... ... 
       alert("1er: "+data2+"."); 
      }); 
     } 

     if(!isNaN(data) && data!=0){ 
     //if(!isNaN(data) && data!=0){ 
      alert("2do: "+data); 
      //este se puede aprender facilmente al buscar el ejemplo en Jquery Ui slider 
      $("#info-disponibilidad").html("Existen, "+data+" asientos Disponibles"); 
      $("#info-disponibilidad").css("color","green"); 
      //este se puede aprender facilmente al buscar el ejemplo en Jquery Ui slider 
      $("#slider-adultos").slider({ 
      //range: "min", 
      min: 1, 
      max: data, 
      slide: function(event, ui) { 
       $("#adultos").val(ui.value); 
       $("#adultos").trigger("change"); 
      }, 
      stop: function(event, ui) { 
       $("#total-box").effect("highlight", {}, 2000); 
       //var max = parseInt($("#adultos").val());//usar esta variable en lugar de value (por si algo falla) 
       manejoreservas(ui.value,"ninos", data); 
      } 
      }); 
      $("#slider-ninos").slider({ 
      //range: "min", 
      min: 0, 
      max: data, 
      slide: function(event, ui) { 
       $("#ninos").val(ui.value); 
       $("#ninos").trigger("change"); 
      }, 
      stop: function(event, ui) { 
       $("#total-box").effect("highlight", {}, 2000); 
       //$("#slider-ninos").slider("option", "max", max); 
       //var max = parseInt($("#ninos").val());// 
       manejoreservas(ui.value,"adultos", data); 
      } 
      }); 
     } 
     else//(!isNaN(data) && data==0 && data!=false) 
     { // && data!=false 
      alert("3ro: "+data+" no disponibilidad"); 
      $("#info-disponibilidad").html("No existen asientos Disponibles"); 
      $("#info-disponibilidad").css("color","red"); 
     } 
     }); 

和PHP代碼是這樣的:

<?php 
//busca cual es la cantidad de asientos disponibles en una reserva si es que esta existe... 
include('conn.php'); 
if (!$con) 
    { 
    die('Fallo conexion a la Base de datos: ' . mysql_error()); 
    }else{ 
    $categoria = $_GET['categoria']; 
    //$fecha = $_POST['fecha_reserva']; 
    $fecha = $_GET['fecha_reserva']; 

    $sql_cant ="SELECT restante FROM reservas WHERE fecha_reserva = '".$fecha."' AND categorias_idcategorias = ".$categoria.""; 

    mysql_select_db("mvargas", $con); 

    $result = mysql_query($sql_cant); 
    $num_rows = mysql_num_rows($result); 
    //echo $sql_cant; 
    if($num_rows < 0){ 
    echo ""; 
    }else{ 


    //echo "<b>".$num_rows."</b>"; 
    while($row = mysql_fetch_assoc($result)){ 
     $foo = $row['restante']; 
     $j++; 
    } 
    // 
    //var_dump($foo); 
    echo $foo; 
    } 
} 
?> 

我已經實現的最後一件事,是一切工作,但它進入第一個IF顯示一條消息,說明該用戶將在該日期的第一個預訂(創建旅行),然後它進入第三個IF(否則在所示的代碼中)擦除第一個消息,並設置消息爲零qtty,在用戶混淆屏幕上兩個消息閃爍笨拙。

很抱歉,如果它太長了......這裏是您需要的頁面看到:http://www.micontrol.cl/~mvargas/wordpress/wp-transatacama/reservas-rapidas/form-reservas.php

+0

第一'if'可製成'如果(!數據){' – redDevil 2012-01-18 19:56:24

回答

2

如果我正確理解你,第二個改變,如果到其他人,如果...

.... 
.... 
      alert("1er: "+data2+"."); 
     }); 
    } else if(!isNaN(data) && data!=0){ 
    //if(!isNaN(data) && data!=0){ 
     alert("2do: "+data); 
.... 
.... 

如果第一個不是真的,它將只運行第二個if語句。

+0

我想你指的是「只運行第二或第三,如果第一個是不真實的「,聽起來像他想要我。 – jbabey 2012-01-18 19:48:47

+0

好點 - 我的意思是,是的,但是因爲第三不是一個if語句,但實際上是其他的,我不認爲它需要說。 – Archer 2012-01-18 19:52:21

+0

既你們的是正確的,首先我有3個IF想進入只是EM的一個,然後我改變,如果別人辯論,因爲它是進入第一(所以它的新的旅遊創建一個DB寄存器) – 2012-01-18 20:10:26

0

我假設在這種情況下你指的是data變量是返回0或空白。在javascript中,語句0 == false的計算結果爲true。您需要使用所謂的嚴格比較,如0 === false,其計算結果爲false。

所以更新您這樣的代碼:

if(data=="false" || data===false){ 

這是在任何時候都使用嚴格的比較操作,除非你有特殊原因,而不是一個好主意。他們是===!==

注意下面的語句評估爲真

(false == 0); // true 
(false == ""); // true 
+0

任何人有任何想法,什麼PHP返回(在我的PHP代碼上面)。 它似乎是呼應的東西不僅僅是一個空字符串更多, 甚至想過的var_dump()寫道NULL – 2012-01-18 22:00:18

+0

知道你的PHP代碼的回報,當你回聲未定義的變量是很重要的(你可能需要將其設置爲東西的情況下,是什麼查找沒有行,因爲回顯一個未定義的變量可能是一個錯誤,並可能導致一個意外的返回值),但另一塊是實際在數據變量中返回到$ post回調您的JavaScript。您可以使用console.log或警報來查看數據的價值是什麼? – 2012-01-19 16:40:25