2012-01-18 1 views
0

사용자 선택에 따라 부분적으로로드 할 양식이 있습니다.jQuery if() 빈 Ajax 응답을 묻는 나쁜 작동

사용자가 날짜를 선택하면 해당 날짜에 사용할 수있는 주식 (열차 여행의 좌석)을 검색합니다.

나는 3 개 IF() 문장

DB를 응답 그래서 그 날의 여행은 이렇게 생성되지 않은 행 (반환하지 않을 경우 나는에 대한 그 순간을 만들어야합니다 요청
  • 먼저 되세요
  • 둘째로, 응답이 숫자인지 (이전에 지정하지 않은 경우에만 미안 해요) 숫자가 0보다 큰지 묻습니다. 그래서 나는 qtty를 업데이트한다. 따라서 costumer는 존재하지 않는 좌석을 살 수 없습니다.
  • 다른 사람이 실패하고 qtty가 0 인 경우 고객에게 해당 날짜의 여행이 가득 찼다는 메시지를 보내면 여행 할 다른 날짜를 선택해야합니다.

내가 가진 코드는 이것이다 :

$.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 (다른 코드는 보여줍니다)을 입력하고 메시지를 설정합니다 제로 큐티 (zero qtty)를 위해, 사용자의 혼동을 위해 스크린에 두 메시지를 어색하게 깜박입니다. 그것은 여기 ... 너무 길어 당신이 볼 수 있도록 페이지 인 경우

죄송합니다 : 내가 제대로 이해 해요 경우 http://www.micontrol.cl/~mvargas/wordpress/wp-transatacama/reservas-rapidas/form-reservas.php

+0

{로 평가하는 것이' – redDevil

답변

2

이 경우 다른 경우에 2 차 변경 ...

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

그러면 첫 번째 것이 참이 아닌 경우에만 두 번째 if 문을 실행합니다.

+0

난 당신이 의미 생각 "만 실행 ===!==

참고 있습니다 두 번째 또는 세 번째는 사실이 아닐 경우 ", 나에게 원하는 것을 들려줍니다. – jbabey

+0

좋은 지적 - 3면은 if 문이 아니기 때문에 실제로는 그렇다.하지만 실제로는 그렇지 않다는 말은 필요 없다고 생각했다. – Archer

+0

둘 다 맞습니다. 우선 3 가지 중 하나를 입력하려고합니다. 그 다음으로 변경합니다. 다른 경우, 처음 입력하는 것이므로 (새 여행을위한 DB 레지스터를 생성합니다) –

0

data 변수가 0 또는 공백을 나타내는 경우를 가정합니다. 자바 스크립트에서는 진술 0 == false이 true로 평가됩니다. false로 평가되는 0 === false과 같은 엄격한 비교를 사용해야합니다.

그래서 다음과 같이 코드를 업데이트 :

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

는 당신이 특별한 이유하지 않음을하지 않는 한 항상 엄격한 비교 연산자를 사용하는 것이 좋습니다. 그들은 다음과 같은 문장이 첫 번째`if`이 경우 (! 데이터)`으로 만들 수 있습니다 진정한

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

누구든지 어떤 생각을 PHP는 반환합니다 (내 PHP 코드에서). 빈 문자열이 아닌 뭔가를 울리는 것처럼 보입니다. var_dump()가 NULL을 쓰는 것으로 생각할 수도 있습니다. –

+0

정의되지 않은 변수를 에코 할 때 PHP 코드가 반환하는 것을 알면 (이 경우에는 정의되지 않은 변수를 반향 한 이후 행을 찾지 못하면 오류가 발생하여 의도하지 않은 반환 값이 될 수 있지만 다른 부분은 실제로 $ post 콜백에서 자바 스크립트에 반환되는 데이터 변수에있는 것입니다. console.log 또는 경고를 사용하여 데이터의 가치를 확인할 수 있습니까? –

관련 문제