【问题标题】:How to send a second value via ajax to php如何通过ajax向php发送第二个值
【发布时间】:2016-08-29 06:36:22
【问题描述】:

我正在使用 ajax 在数据库中搜索值并填充下拉列表。这是我的 ajax 代码:

function searchq6(){
    var searchstate = $("input[name='region']").val();
    var searchTxt = $("input[name='suburb']").val();
    $.post("search-suburb.php", {searchVal: searchTxt, st:searchstate})
    .done(function(sbb) {
        $("#sbb").html(sbb);
    }); 
}

在这里,我让用户输入区域并在数据库中搜索该区域的郊区。这是我的 php 代码:

$output = '' ;
if (isset($_POST['searchVal'])){
$searchq = $_POST['searchVal'];
$st = $_POST['st'];
$query = mysqli_query($link, "SELECT DISTINCT title FROM `wp_locations` WHERE state='".$st."'  AND `title` LIKE  '%".$searchq."%' LIMIT 10")or     die("Could not search!");
if (!mysqli_query($link,$query))
{
        echo("Error description: " . mysqli_error($link));
}
$count = mysqli_num_rows($query);
if($count == 0){
    $output = '<option>No results!</option>';
}else{
while($row = mysqli_fetch_array($query)){
    $suburb = $row['title'];
    $postcode = $row['postcode'];

?>
    <option value="<?php echo $suburb; ?>"><?php echo $suburb; ?>    </option>
<?php
} // while
} // else
} // main if

我想要做的是,将postcode 值发送到不同的输入框。这就是我的 html 的样子

Suburb:* <input type="text" name="suburb" list="sbb" required size="30" value="<?php echo $suburb;  ?>" onkeyup="searchq6()" id="output">
        <datalist id="sbb" name="taskoption6" >
                <option> </option>
        </datalist>
Postcode:* <input type="number" name="postcode" required value="<?php echo $postcode;  ?>"  id="postcode">

仅添加$("#postcode").html(postcode); 不起作用。如何从 php 文件中发送值?

【问题讨论】:

  • 删除最后一行代码sn-p最后一行&lt;?php echo $postcode; ?&gt;"之后的双引号。
  • @MedetAhmetsonAtabayev,这是一个错字。现在在问题中更正它
  • 你为什么不从php发送json作为结果?
  • @Abhishek 我该怎么做?我如何通过ajax取回它?我对json不是很熟悉
  • 通过AJAX请求返回的每个郊区是否有不同的邮政编码?并且当从&lt;datalist&gt;中选择郊区时,邮政编码的输入必须显示相关值。是你想要的吗?

标签: php jquery html ajax


【解决方案1】:

只需创建一个包含三个值的数组。 1.成功真/假 2. 数据数组,如果成功,则为 true,否则为 null 3. 成功值为false的错误原因。

因此,您的错误结果之一将是:

$result = ['success' => false, 'data' => null, 'error' => 'error connecting db'];

你的成功结果将是:

$result = ['success'=> true, 'data'=> ['suburbs'=> $suburbs, 'pincode' => $pincode], 'error' => null];

现在将此结果数组作为 json 发送。

echo json_encode($result);

然后解析 Json in jquery 并将结果填充到您的位置。

【讨论】:

  • 我必须使用这种格式:$.ajax({ dataType: "json", url: url, data: data, success: success }); 还是可以使用相同的 ajax 函数?
  • @YohanBlake 你可以使用同样的功能,它会智能猜测响应的格式。
  • 但在我的情况下,当返回值时,郊区会在
  • 始终避免在 ajax 响应中返回 HTML。只需解析结果并获取郊区数组。然后使用 jquery 填充您的
  • 我尝试在 php 文件中使用 echo $suburb; 并在数据列表中使用 &lt;option&gt; &lt;/option&gt; ,但它不起作用。你能告诉我怎么做的代码吗?
【解决方案2】:

在 PHP 文件中:

// Output is array, will be send as JSON data
$output = array("suburbs"=>'', "postcodes"=>array());

if (isset($_POST['searchVal'])){
    $searchq = $_POST['searchVal'];
    $st = $_POST['st'];
    $query = mysqli_query($link, "SELECT DISTINCT title FROM `wp_locations`     WHERE state='".$st."'  AND `title` LIKE  '%".$searchq."%'     LIMIT 10")or     die("Could not search!");
    if (!mysqli_query($link,$query)) {
        echo("Error description: " . mysqli_error($link));
    }
    $count = mysqli_num_rows($query);
    if($count == 0){
        $output["suburbs"] = '<option>No results!</option>';
    }else{
        while($row = mysqli_fetch_array($query)){
            $suburb = $row['title'];
            $postcode = $row['postcode'];
            $output["suburbs"] .= "<option value=\"$suburb\">$suburb  </option>";
            $output["postcodes"][$suburb] = $postcode;
        } // while
    } // else
    // Send result
    echo json_encode($output);
} // main if

在 HTML 的 AJAX 部分:

// Make global variable that holds POSTCODES:
var postcodes = {};
function searchq6(){
    var searchstate = $("input[name='region']").val();
    var searchTxt = $("input[name='suburb']").val();
    $.post("search-suburb.php", {searchVal: searchTxt, st:searchstate})
    .done(function(response) {
        var responseObj = jQuery.parseJSON(response);
        $("#sbb").html(responseObj["suburbs"]);
        postcodes = responseObj["postcodes"];
    }); 
}

在 HTML 中:

 Suburb:* <input type="text" onselect="change_post(this)" onchange="change_post(this)" name="suburb" list="sbb" required size="30"  value="<?php echo $suburb;  ?>" onkeyup="searchq6()" id="output">
    <datalist id="sbb" name="taskoption6" >
            <option> </option>
    </datalist>
 Postcode:* <input type="number" name="postcode" required value="<?php echo $postcode;  ?>"  id="postcode">
 <script>
      //var postcodes = { "1":"First", "2":"Second", "3":"Third", "4":"Fourth" };
        function change_post(out) {
            //console.log(postcodes[ out.value ]!=undefined);
            if ( postcodes[ out.value ]!=undefined )
                document.getElementById("postcode").innerHTML = postcodes[ out.value ];
        }
 </script>

【讨论】:

  • 我在控制台中得到一个Uncaught SyntaxError: Unexpected token E
  • 你能在 .done() 事件函数中添加console.log(response);,并把它显示的内容放在这里吗?
  • Error description: {"suburbs":"&lt;option value=\"FOOTSCRAY\"&gt;FOOTSCRAY &lt;\/option&gt;&lt;option value=\"WEST FOOTSCRAY\"&gt;WEST FOOTSCRAY &lt;\/option&gt;","postcodes":{"FOOTSCRAY":null,"WEST FOOTSCRAY":null}}
  • 什么时候出现 SyntaxError?点击一个功能后?
  • 你能用圣歌说话吗?
猜你喜欢
  • 1970-01-01
  • 2017-02-24
  • 2011-10-19
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 2016-09-30
相关资源
最近更新 更多