PHP无法接收使用jquery发送的数据。导致php文件

时间:2016-07-05 08:25:26

标签: javascript php jquery html ajax

我尝试使用jQuery将数据从HTML select发送到PHP文件。不幸的是它不起作用。我已经看过这里提出的所有解决方案,但它仍然无效。这是代码:

<select id="city" name="city" >
    <optgroup label="Popular Cities">
        <option selected style="display:none;color:#eee;">Entire country</option>
        <option value="city1">city 1</option>
        <option value="city2">city 2</option>
        <option value="city3">city3</option>
        <option value="city4">city4</option>
        <option value="city5">city5</option>
</select>
$("#city").change(function() {
    $.ajax({
        url: 'post.php',
        type: 'POST',
        data: { city: $(this).val() },
        success: function(data) {
            alert(data);
            window.location.replace("post.php");
            window.location.reload("post.php");
        }
    });
});
$city = isset($_POST['city']) ? $_POST['city'] : false;
echo "".$city."";

alert()有效,但我仍未在post.php收到任何数据。我也尝试过下面的代码,但仍然无法使用它。

$.post("post.php", { city: $(this).value }, function(data) {
    alert(data);
    window.location.reload("post.php");
    window.location.replace("post.php");
});

有任何帮助吗?

3 个答案:

答案 0 :(得分:2)

您需要使用表单,如评论中所述

<form action="post.php" method="get" id="frmForm">
 <select id="city" name="city" >
<optgroup label="Popular Cities">
    <option selected style="display:none;color:#eee;">Entire   country</option>
    <option value="city1">city 1</option>
    <option value="city2">city 2</option>
    <option value="city3">city3</option>
    <option value="city4">city4</option>
    <option value="city5">city5</option>
 </select>
</form>

然后使用jquery提交城市选择表格

$(document).ready(function() {

$("#city").change(function() {
$('#frmForm').submit();    

});

然后你可以找到$ _GET ['city']的城市名称;

答案 1 :(得分:0)

这不是你打算如何使用Ajax。你的PHP文件应该做的是处理Ajax请求中发送的数据,并返回一个将由Ajax成功回调处理的内容。

您在此尝试做的是:

  1. 将数据发布到post.php,工作正常,
  2. 然后,继续post.php,因为您正在制作一个完整的新HTTP请求,因此没有先前发送的数据。
  3. 您应该做的是在select更改后提交表单,这会将您重定向到post.php使用HTML,而不是JavaScript。

答案 2 :(得分:0)

也许这适合你想要的东西:

HTML文件:

<form action="post.php" method="POST">
<select id="city" name="city" >
    <optgroup label="Popular Cities">
        <option selected style="display:none;color:#eee;">Entire country</option>
        <option value="city1">city 1</option>
        <option value="city2">city 2</option>
        <option value="city3">city3</option>
        <option value="city4">city4</option>
        <option value="city5">city5</option>
</select>
</form>

然后在post.php中有与当前相同的代码。