【问题标题】:Populate select box when clicking link单击链接时填充选择框
【发布时间】:2013-02-17 19:20:23
【问题描述】:

我有一个 T 恤页面,用户需要在其中选择颜色和尺寸(请参阅 example here

当用户单击颜色(带有链接的图像)时,我需要填充“尺寸”下拉列表。

将用于填充外观的彩色图像/链接的代码如下:

<a  onclick="document.getElementById('productColor10474717').value='120';" class="colorlink" href="https://www.ni-dieu-ni-maitre.com/tshirt_image.php?a=10474717&color=120" target="tshirt_image">

(在此链接中,颜色代码为 120)

我已经制作了一个 php 脚本来获取必须在下拉列表中填充的结果: https://ni-dieu-ni-maitre.com/_test/tshirt_ajax.php?checkshop=266497&checkproducttype=210&stockcolor=2

"&stockcolor" 是颜色代码的变量。其他 2 个变量必须保持不变

php 页面将返回类似的内容:

[{"optionValue":2, "optionDisplay": "2"},{"optionValue":3, "optionDisplay": "3"},{"optionValue":4, "optionDisplay": "4"},{"optionValue":5, "optionDisplay": "5"},{"optionValue":6, "optionDisplay": "6"}]

我真的是 AJAX 的新手,我不知道如何在 tshirt 页面上实现 AJAX 以使用颜色代码变量从 php 页面获取结果,然后将其填充到下拉框中,我需要帮忙做一下

非常感谢!

【问题讨论】:

  • 看看 jquery-ui 自动完成小部件 - jqueryui.com/autocomplete
  • 但是下拉框在我看来已经填充了
  • 填充只是为了举例。我需要根据我链接的 php 脚本的结果来填充它,因为该脚本将检查我的 T 恤供应商的库存状态并仅返回未缺货的尺寸

标签: jquery ajax select drop-down-menu populate


【解决方案1】:

让php文件打印出类似的结果

<option value="optionValue">optionResult</option>
<option>.......</option>
<option>.......</option>

将 id="stockcolor" 添加到每个 (a) 元素并删除超链接和 onclick javascript,例如:

<a id="63" class="colorlink" href="#">
    <img src="https://image.spreadshirt.com/image-server/v1/appearances/63" width="24" height="24" class="cnormal">
</a>

安装 jquery(将此行添加到文档的开头):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

然后使用ajax

$(document).ready(function(){
    $.ajax({
        type: "post",
        url: "Untitled-3.php?checkshop=266497&checkproducttype=210&stockcolor=" + $('#productColor10474717').val(),
        success: function(data){
            $('select#size').html(data);
    }
    });


    $('a.colorlink').click(function(){
    var stockcolor = $(this).attr('id'),
        checkshop = 266497,
        checkproducttype = 210;

    $.ajax({
        type: "post",
        url: "tshirt_ajax.php?checkshop=" + checkshop + "&checkproducttype=" + checkproducttype + "&stockcolor=" + stockcolor,
        beforeSend: function(){
            $('#productColor10474717').val(stockcolor);
        },
        success: function(data){
            $('select#size').html(data);
            $('#tshirt_image').attr('src', 'https://www.ni-dieu-ni-maitre.com/tshirt_image.php?a=10474717&color=' + stockcolor)
        }
    });

    });
});

【讨论】:

  • 我试过了,但它不起作用,不确定我用你的 ajax 代码做错了什么新的 T 恤页面:ni-dieu-ni-maitre.com/_test/tshirt_ajax1.php 带有
  • 您需要先安装 jquery,然后再使用 $(document).ready 包装代码。至于颜色,您可以通过将颜色值作为 id 属性添加到 元素来轻松解决该问题。我修改了代码,再次检查它是否有效
  • 我尝试了更新版本,但仍然无法正常工作。我不明白出了什么问题:(顺便说一句,我将 ajax 放在头部还是正文中?在我的 php 结果页面中,我需要
  • 之前的代码中缺少(,)(成功:),ajax中的url应该是与服务器根文件夹相关的php文件的路径,因此它应该是“tshirt_ajax.php”而不是“ni-dieu-ni-maitre.com/_test/tshirt_ajax.php”。该脚本通常添加在头部部分,但它也适用于正文部分。在 php 文件中,输出不需要选择标签,只需要选项。它现在应该可以工作了,因为我已经在我的服务器上对其进行了测试,如果你遇到任何问题,请告诉我。 ps(将 ajax 类型更改为 post 而不是 get 以获得更快的结果)
  • 太棒了,它现在工作得很好!最后一个问题:可以添加一个变量 DefaultColor=2 所以当页面加载时,它会通过查询 php 页面的 &stockcolor=defaultcolor (2) 来填充
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多