2012-01-09 8 views
1

アヤックス - URLに設定された変数へのアクセス:

<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> 

form_page.html 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(); 
}); 

は、検証のためにprocess_request.jsに渡す、form_page.htmlからの入力フォームデータを取ります。私はseltruckだけを表示し、他のフォームフィールドはform_page.htmlに設定されています。

.jsの検証では、フィールドが入力されているかどうかがチェックされ、入力されていない場合はエラーラベルクラスがform_page.htmlに表示されます。

seltruckフォームフィールドでは、mysqlをクエリして空き状況を確認する必要があります。 do_truck_search.phpスクリプトがうまく動作していますが、do_truck_search.phpの変数 'truck_status'を.ajax呼び出しに戻す方法がわかりません。

「.ajax」コールで戻ると、「continue」またはエラー:ラベル#seltruck_noavail_errorが表示されます。

助けてくださいか?

ありがとうございました!

更新日 - これを動作させることはできませんか? dataType: "text"は.ajaxで動作しますか?何かご意見は?

$.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データ型が信頼できた理由はあると思う:

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

process_request.js

do_truck_search.phpスペース)はPHPスクリプトからエコーされます。 datatype: 'text'と.ajax successコールバックのalert()を使用すると、実際のデータテキストの前に小さい四角形が表示されます。私の汚れた解決策は、データ型:テキストを使用して、次に検索したい実際のデータをsubstrだけ使用することでした。

PHPスクリプトでhi/lowを検索して、エコースペースの原因を調べましたが、見つかりませんでしたか?これを行うには

答えて

0

1つの可能な方法は:$.ajax

  1. は、PHPスクリプトecho json_encode(array("truck_status" => $truck_status));
  2. dataType: "json"を設定します。他の出力は存在しないことに注意してください(レイアウト、ビューなどを無効にしてください)。
  3. success: function() {...}からsuccess: function(data, status) {...}に変更してください。変数dataには、あなたが設定したものと同じキーtruck_statusが含まれます。したがって、data.truck_statusを使用してアクセスしてください。
+0

助けてくれてありがとう!私はPHPで "nopass"をエコーすることができ、dataType: "text"を使ってそれをつかんでいましたが、jsonメソッドがうまく動作しませんでした。上記のアップデートを参照してください.... – dan

+0

jsonメソッドの種類data.truck_statusが間違っているか、まったく表示されていない時間の約1/2のように見えますか?私はアラートを使用しています(データ。truck_status); – dan

+0

ブラウザがdata.truck_statusをキャッシュしている可能性がありますか? PHPで私は($ truck_status ['truck_status'])を解除することを確認してください。 ??ありがとう! – dan

関連する問題