php - ajax - 访问 url : 中设置的变量

标签 php javascript jquery ajax

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。

有什么帮助吗?

谢谢!

更新 - 无法使其正常工作? dataType: "text"in .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();
      }
    }
});

更新

我认为 json 数据类型不可靠的原因是 PHP 脚本中回显了一个小方 block (可能是空格)。在 .ajax 成功回调中使用 datatype: 'text' 和alert() 会在实际数据文本之前显示小方 block 。我的肮脏解决方案是使用 datatype: text,然后减去我想要检索的实际数据。

我在 PHP 脚本中搜索 hi/low 来查找回显空格的原因,但找不到它?

最佳答案

一种可能的方法:

  1. $.ajax中设置dataType:“json”
  2. 在 PHP 脚本中 echo json_encode(array("truck_status"=> $truck_status));。请注意,不得存在其他输出(因此禁用您的布局、 View 等)
  3. success: function() {...} 更改为 success: function(data, status) {...};现在变量 data 将包含键 truck_status 以及您设置的值。因此,请使用 data.truck_status 访问它。

关于php - ajax - 访问 url : 中设置的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790039/

相关文章:

PHP MySQL IPN问题

php - 如何使用 Codeigniter 编辑 MySQL 表行?

php - 如何使用php变量?

php - 使用 DB::table() 或 Model::all() Laravel 的 Eloquent

javascript - 具有 ID 的 DOM 树元素是否成为全局属性?

javascript - 如何从该字符串中提取 ID?

javascript - 在不同的选项上获取不同的表格

javascript - 查找所有禁用的字段并添加Class jquery

PHP如何使用ajax进行表单提交

javascript - Range = document.getSelection().getRangeAt(0) 在 Safari 上不起作用