【问题标题】:Updating JQuery Mobile select menu in a form using Ajax and PHP使用 Ajax 和 PHP 在表单中更新 JQuery Mobile 选择菜单
【发布时间】:2013-07-12 00:08:30
【问题描述】:

我正在使用涉及表单的 jQuery mobile 构建网站。

我一直在尝试实现此方法来动态更改选择菜单: Link

虽然我已经能够在我的 jQuery 移动网站之外执行此操作,但它似乎无法与 jQuery 移动一起使用。我设置了data-ajax="false" 并尝试了很多东西,但我找不到解决方案。这是因为 jQuery mobile 的原因吗?

您可以在下面找到代码。

对于主页:

<?php require('config_db.php');?>

...

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<link rel="stylesheet" type="text/css" href="http://dev.jtsage.com/cdn/datebox/latest/jqm-datebox.min.css" /> 
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>

...

<div data-role="fieldcontain">
    <label for="course">Course:</label>
    <select id="course" name="course" data-native-menu="false">
        <option value="0">0</option>
        <option value="1">1</option>
    </select>
</div>  
<div data-role="fieldcontain">
    <label for="student">Student:</label>
    <select id="student" name="Student" data-native-menu="false">
    </select>
</div>

...

<script type="text/javascript">
$(function() {
 $("#course").bind("change", function() {
     $.ajax({
         type: "GET", 
         url: "get_students.php",
         data: "course="+$("#course").val(),
         success: function(html) {
             $("#student").html(html);
         }
     });
 });
});
</script>

Config_db.php 已经过测试,效果很好。

Get_students.php 也可以正常工作,并将从测试数据库生成以下输出:

<option value='1'>John Doe</option><option value='2'>Jane Doe</option>

我做了一个测试,一开始去掉 jQuery mobile 行解决了这个问题。不幸的是,我确实需要 jQuery mobile。

【问题讨论】:

  • 您必须提供更多信息。你的代码会特别有帮助。
  • 谢谢!我添加了一些代码。
  • 有意思,一定是JQuery mobile自己在做的事情。您是否检查过 Javascript 控制台以查看它是否报告了任何内容?
  • 控制台中没有任何内容,XHR 资源面板中也没有任何内容。我检查了 Chrome 和 Firebug。 (变得绝望。)
  • 如果有人有更好的方法来做这些(例如,通过实际使用 jQuery mobile),那么这也会有所帮助。文档对此非常有限,但应该很容易做到。

标签: php jquery ajax jquery-mobile select


【解决方案1】:

JQuery mobile 不只是重新设置选择框的主题,它还添加了它自己的复杂标记。您需要告诉 jQuery Mobile 更新它(移动显示)。

<script type="text/javascript">
$(function() {
 $("#course").bind("change", function() {
     $.ajax({
         type: "GET", 
         url: "get_students.php",
         data: "course="+$("#course").val(),
         success: function(html) {
             $("#student").html(html).selectmenu('refresh', true);
         }
     });
 });
});
</script>

【讨论】:

  • 为什么没有选择这个作为答案?
  • 这应该可以,但不要在 jQuery Mobile 中使用 .ready。
  • 非常感谢。这解决了它,它让我对 jQuery mobile 的实际工作方式有了更好的了解。 :-)
  • 奥马尔,有没有替代使用 .ready 来实现我想要做的事情?
  • @Omar,也谢谢你。我找到了你的意思,我现在已经将 "$(function()" 更改为 "$(document).on('pageinit', function(){" 在我了解你的意思后:link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多