2012-01-09 19 views
1

form_page.html阿賈克斯 - 訪問網址設置變量:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script src="js/process_truck_req.js"></script> 
    <script src="js/jquery-1.2.3.pack.js"></script> 
    <script src="js/runonload.js"></script> 
</head> 

<div class="prform" id ="request_form">  
    <form name="truckreq" action="" method="post" class="truckreq_form"> 
     <label for="seltruck" id="seltruck_label"><font class="whitetext">Select Truck</font></label><br /> 
     <select name="seltruck" id="seltruck"> 
      <option value="Select a Truck"> Select a Truck</option> 
      <option value="2011+Tacoma">2011 Tacoma</option> 
      <option value="2008+Tundra">2008 Tundra</option> 
      <option value="2000+Tacoma">2000 Tacoma</option> 
     </select><br /> 
     <label class="error" for="seltruck" id="seltruck_error"><font class="redtext">This field is required.</font></label><br /> 
     <label class="error" for="seltruck" id="seltruck_noavail_error"><font class="redtext">Not Available on selected Dates.</font></label><br /> 
    </form> 

process_request.js

$(function() { 
    $('.error').hide(); 
    $('input.text-input').css({backgroundColor:"#FFFFFF"}); 
    $('input.text-input').focus(function(){ 
    $(this).css({backgroundColor:"#FFDDAA"}); 
}); 

$('input.radio-input').focus(function(){ 
    $(this).css({backgroundColor:"#FFDDAA"}); 
}); 

$('input.text-input').blur(function(){ 
    $(this).css({backgroundColor:"#FFFFFF"}); 
}); 

$(".button").click(function() { 
    // validate and process form 
    // first hide any error messages 
    $('.error').hide(); 

    var seltruck = $("#seltruck").val(); 
    if (seltruck == "Select a Truck") { 
     $("label#seltruck_error").show(); 
     $("#seltruck").focus(); 
      return false; 
     } 

     var truckSearch = 'seltruck=' + seltruck + '&outdate=' + outdate + '&indate=' + indate; 

     $.ajax({ 
      type: "POST", 
      url: "do_truck_search.php", 
      data: truckSearch, 
      success: function() { 
       var truck_status = $("#truck_status").val(); 
       if (truck_status == "nopass") { 
        $("label#seltruck_noavail_error").show(); 
        $("#seltruck").focus(); 
        return false; 
       } 
      } 
     }); 
    }); 
}); 

runOnLoad(function() { 
    $("input#projdesc").select().focus(); 
}); 

採取從form_page.html輸入表格數據,傳遞給process_request.js進行驗證。我只顯示seltruck,其他表單字段在form_page.html中設置。

在.js驗證中,字段檢查是否填寫,如果不填寫,則錯誤標籤類將顯示在form_page.html上。

seltruck表單字段要求查詢mysql並檢查可用性。我的do_truck_search.php腳本工作得很好,但不知道如何將「truck_status」變量從do_truck_search.php傳遞迴.ajax調用。

一旦回到.ajax調用,我想要成功:'繼續'或錯誤:顯示標籤#seltruck_noavail_error。

有幫助嗎?

謝謝!

UPDATE - 不能得到這個工作? dataType:.ajax中的「text」可以工作嗎?有什麼想法嗎?

do_truck_search.php

if (($unixoutdate >= $dbunixoutdate) && ($unixoutdate <= $dbunixindate) && ($dbtruck == $seltruck_final)){ 
    $truck_status = "nopass"; 
    $data2 = array('truck_status' => $truck_status); 
    echo json_encode($data2); 
} 

process_request.js:

$.ajax({ 
    type: "POST", 
    url: "do_truck_search.php", 
    data: truckString, 
    dataType: "json", 
    success: function(data) { 
     if (data.truck_status == "nopass"){ 
      $("label#seltruck_noavail_error").show(); 
     } 
    } 
}); 

UPDATE

我覺得爲什麼JSON數據類型是不可靠的原因是因爲一個小廣場(可能是空間)從PHP腳本回顯。使用數據類型:'text'和.ajax成功回調中的alert()顯示實際數據文本之前的小方塊。我的骯髒的解決方案是使用數據類型:文本,然後substr我想要檢索的實際數據。

我在PHP腳本中搜索hi/low來查找echo'd空間的原因,但是找不到它?

回答

0

一種可能的方式做到這一點:

  1. $.ajax設置dataType: "json"
  2. 在PHP腳本echo json_encode(array("truck_status" => $truck_status));。請注意,沒有其他輸出必須存在(所以禁用您的佈局,視圖等)
  3. 更改success: function() {...}success: function(data, status) {...};現在變量data將包含密鑰truck_status以及您設置的任何值。因此請使用data.truck_status進行訪問。
+0

感謝您的幫助!我能夠在PHP中回顯「nopass」,並在.ajax調用中使用dataType:「text」來獲取它,但從未得到過json方法的工作,請參閱上面的更新.... – dan 2012-01-10 13:39:10

+0

我得到了json方法的工作,似乎是data.truck_status不正確或根本不顯示的時間的1/2左右?我正在使用警報(數據。truck_status); – dan 2012-01-12 17:33:59

+0

瀏覽器能否緩存data.truck_status?在PHP中,我確保未設置($ truck_status ['truck_status']); ??謝謝! – dan 2012-01-12 17:34:59