PHP可以't接收使用jquery发送的数据.导致php文件上的变量未定义

PHP can't receive data sent using jquery . lead to undifined variable on php file

本文关键字:导致 数据 php 文件 未定义 变量 jquery 可以 PHP      更新时间:2023-09-26

我正在尝试使用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");
});

有什么帮助吗?

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

<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找到城市名称;

这不是使用Ajax的方式。PHP文件应该处理Ajax请求中发送的数据,并返回由Ajax成功回调处理的内容。

你想做的是:

  1. 将数据发布到工作良好的post.php
  2. 然后,继续post.php,它没有以前发送的数据,因为您正在发出一个全新的HTTP请求

您应该做的是在select更改时提交表单,这将使用HTML而不是JavaScript将您重定向到post.php

也许这符合您的需求:

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中使用与current相同的代码。