form_page.htmlАякса - доступ к переменным, установленным в 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>
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.
любая помощь?
спасибо!
ОБНОВЛЕНИЕ - не может заставить это работать? dataType: «текст» в .ajax работает? Есть предположения?
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 был ненадежным, потому что маленький квадрат (вероятно, space) является эхо-кодом из PHP-скрипта. Использование типа данных: «текст» и предупреждение() в обратном вызове .ajax success показывают небольшой квадрат перед фактическим текстом данных. Мое грязное решение состояло в том, чтобы использовать тип данных: текст, а затем просто подстроить фактические данные, которые я хочу получить.
Я искал hi/low в скрипте PHP, чтобы найти причину эхо-пробела, но не смог найти его?
благодарит за помощь! Я смог эхо «nopass» в PHP и захватил его с помощью dataType: «text» в вызове .ajax, но никогда не получал json-метод, см. Выше обновление .... – dan
Я получил вид метода json от работы, похоже примерно на 1/2 момента, когда data.truck_status неверен или вообще не отображается? Я использую alert (данные.truck_status); – dan
может ли браузер кэшировать data.truck_status? В PHP я обязательно отключусь ($ truck_status ['truck_status']); ?? благодаря! – dan