【问题标题】:Populating dropdown menu in separate div from php从 php 在单独的 div 中填充下拉菜单
【发布时间】:2014-11-22 08:29:25
【问题描述】:

在单独的 div 中从 php 填充下拉菜单

我有一个函数 search(),它使用 ajax 并将许多值/变量传递给 php,如颜色、itemtype 等作为“ajax_data”。

    $.ajax({
        url: 'phpmysql.php',
        data: ajax_data,
        success: function (data) {
            $('#searchresults').html(data);
        }
    }).error(function() {
        alert ('An error occurred');
    });

搜索结果随后会动态填充到#searchresults 中。

我有一个下拉菜单 (#pagemenu),我想动态显示当前搜索的页码,例如,如果有 10 页的结果显示选项从 1 到 10 的下拉菜单。

我已经在 php 中计算出“每页结果”和“总页数”,并将它们设置为 $per_page 和 $totalpages。

//forloop listing number of pages in dropdown
    for ($x=1; $x<=$totalpages; $x++) {
    echo "<option value=".$x.">".$x."</option>";
    }

所以搜索结果被加载到#searchresults,但是我如何将上面的for循环加载到单独的div中的#pagemenu下拉列表中?我目前能想到的唯一方法是在主页中为下拉菜单和 forloop 编写 php,然后使用会话变量链接到 php 文件,但不确定这是否是个好主意。任何建议表示赞赏!谢谢

【问题讨论】:

  • 真的不清楚你的具体问题是什么

标签: javascript php jquery drop-down-menu pagination


【解决方案1】:

坚持您的具体问题,这涉及在服务器中创建下拉菜单并在 AJAX 响应中返回它,您似乎需要在所述响应中返回两件事:数据和分页选项。

你可以做的一件事是返回一个包含这两个东西的 Json 对象,所以你可以做这样的事情:

success: function (data) {
    $('#searchresults').html(data.result);
    $('#pagemnu').html(data.options);
}

从客户端实现此目的的一种方法是将dataType 添加到json,因此data 被解析为一个对象并可以这样使用:

$.ajax({

    dataType: 'json',

    url: 'phpmysql.php',
    data: ajax_data,
    success: function (data) {
        $('#searchresults').html(data.result);
        $('#pagemnu').html(data.options);
    }
}).error(function() {
        alert ('An error occurred');
});

在服务器端,您将使用两个结果填充一个数组并将其作为 JSON 返回:

$result = array();
...
$result['searchResult'] = $theSearchResult;

$optionsHtml = '';
for ($x=1; $x<=$totalpages; $x++) {
    $optionsHtml .= "<option value=".$x.">".$x."</option>";
}
$result['options'] = $optionsHtml;

...

echo json_encode( $result ); 

【讨论】:

  • 太好了,我会这样尝试。谢谢
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多