【问题标题】:Autoselect and jQuery post doesnt work together自动选择和 jQuery post 不能一起工作
【发布时间】:2013-03-20 17:44:58
【问题描述】:

我的代码还有另一个问题。

    <script type="text/javascript">
        $("#wojewodz").change(function(){
        var id_wojewodztwa = $("#wojewodz").children(":selected").attr("id");
        $.post("miasta.php", { id_wojewodztwa: id_wojewodztwa } );
        $('#powiat_miasto_auto_complete').autocomplete({source:'miasta.php', minLength:2});
        });
    </script>

这是获取所选选择的 ID 并将其传输到 miasta.php 的函数

$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

try {
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass, $options);
}
catch(PDOException $e) {
    echo $e->getMessage();
}

$return_arr = array();

if (($conn) and (isset($_GET['id_wojewodztwa'])))
{
    $id_wojewodztwa = $_GET['id_wojewodztwa'];
    $ac_term = "%".$_GET['term']."%";
    $query = "SELECT DISTINCT nazwa FROM podzial_tm where woj='$id_wojewodztwa' and nazdod!='województwo' and nazwa like :term LIMIT 10";
    $result = $conn->prepare($query);
    $result->bindValue(":term",$ac_term);
    $result->execute();

    /* Retrieve and store in array the results of the query.*/
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $row_array['value'] = $row['nazwa'];

        array_push($return_arr,$row_array);
    }


}
/* Free connection resources. */
$conn = null; 
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
?>

谁能告诉我哪里出了问题? 当我将“ where woj='$id_wojewodztwa'”更改为例如“ where woj='26'”并删除“ and (isset($_GET['id_wojewodztwa']))”时,一切正常,所以我认为我有问题使用 POST

复活节快乐! :)))

【问题讨论】:

    标签: php jquery html mysql post


    【解决方案1】:

    您正在发布数据。您需要在 $_POST['id_wojewodztwa'] 中查找您要查找的值,而不是在 $_GET 中。

    【讨论】:

    • 等一下......当我将数据发布到 miasta.php 时,我必须在 miasta.php 中获取它吗?我说的对吗?
    • @DawidGórecki 您正在使用 jquery 帖子$.post("miasta.php"
    • $_GET 保存通过 URL 查询字符串传递给 PHP 的 HTTP GET 请求的值。当数据以表单编码方式发布时,$_POST 保存为 HTTP POST 请求传递给 PHP 的值。 POST 数据位于$_POST。这是 PHP 101,所以你应该去 PHP 站点阅读这些超全局变量是如何填充的。此外,听起来您应该阅读基本 HTTP 协议以了解 GET 和 POST 之间的区别(以及其他动作动词,如 PUT 和 DELETE,它们通常不被浏览器使用,但对于了解现代 RESTful Web 服务很有用)
    • @MikeBrant,我认为你错了,我们可以使用$_GET
    • @Amir 您可以使用 HTTP GET 来执行此操作,但您的代码示例显示您使用 POST(通过 $.post() 方法)。
    【解决方案2】:
    $.post("miasta.php", { id_wojewodztwa: id_wojewodztwa } );
    

    $.get("miasta.php", { id_wojewodztwa: id_wojewodztwa } );
    

    或者如果你必须赶上结果,使用:

    $.get("miasta.php", { id_wojewodztwa: id_wojewodztwa },function(result){
           /** some code here */
    },'json');
    

    更新:

    如果您使用 $.post,请编辑以下行:

    if (($conn) and (isset($_POST['id_wojewodztwa'])))
    {
        $id_wojewodztwa = $_POST['id_wojewodztwa'];
    

    【讨论】:

    • 我有 $.post("miasta.php", { id_wojewodztwa: id_wojewodztwa } );而$id_wojewodztwa = $_POST['id_wojewodztwa'];,自动补全还是没有结果。
    【解决方案3】:

    删除isset($_GET['id_wojewodztwa']),同时修改$id_wojewodztwa = intval($_GET['id_wojewodztwa']);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多