自动选择和 jQuery post 不能一起工作

Posted

技术标签:

【中文标题】自动选择和 jQuery post 不能一起工作【英文标题】:Autoselect and jQuery post doesnt work together 【发布时间】: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

复活节快乐! :)))

【问题讨论】:

【参考方案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']);

【讨论】:

以上是关于自动选择和 jQuery post 不能一起工作的主要内容,如果未能解决你的问题,请参考以下文章

select2 和sheepit jquery 插件不能一起工作

jquery Chosen 和 mCustomScrollbar 不能一起正常工作

jQuery Ajax cors IE10 不工作

如何将 jquery-ui 的自动完成选择映射到 POST 上的 Java 类

RequiredFieldValidator 不能与 jQuery UI 一起正常工作

Jquery UI 对话框不能与 JQuery Mobile 一起工作