jQuery ajax脚本可以读取第一个XML文件,但不能读取第二个

时间:2018-01-25 17:50:25

标签: jquery ajax xml prestashop prestashop-1.7

所以我有两个相似但功能齐全的功能,但只有其中一个功能。

我有一个来自PrestaShop API的两个xml文件,我需要从中获取信息。第一个是产品名称,工作正常,第二个是ID,即使它与另一个几乎相同也不起作用。

根据输入的产品名称获取产品名称的代码:

delay(function () {
        $.ajax({
            type: "GET",
            url: pageurl+"api/products/?display=[name]&filter[name]=%[" + $("#product_name").text() + "]%",
            dataType: "xml",
            username: key,
            password: "",
            contentType: "xml",
            success: function (xml) {
                var $xml = $(xml);
                $("#product_names").html("");
                $xml.find('product').each(function () {
                    var choice = $(this).find('language[id="1"]').text();
                    $("#product_names").append("<option value=\""+choice+"\">");
                });
            }
        });
    }, 700);

这是此函数正在阅读的XML文件:

<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <products>
        <product>
            <name>
                <language id="1" xlink:href="http://localhost/wogshop/api/languages/1">
                    <![CDATA[ Nice Dress ]]>
                </language>
                <language id="2" xlink:href="http://localhost/wogshop/api/languages/2">
                    <![CDATA[ Nice Dress ]]>
                </language>
            </name>
        </product>
    </products>
</prestashop>

这是无法读取XML文件的代码:

$.ajax({
        type: "GET",
        url: pageurl+"api/products/?display=[id]&filter[name]=[" + $("#product_name").text() + "]",
        dataType: "xml",
        username: key,
        password: "",
        contentType: "xml",
        success: function (xml) {
            var real_id;

            real_id = $(xml).find('id').text();

            $("#product_id").val(real_id);
            $("#bananas").html("ID is "+$(xml).text());
        }
    });

如果我搜索“印花连衣裙”,这是它正在查看的XML文件:

<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <products>
        <product>
            <id>
                <![CDATA[ 3 ]]>
            </id>
        </product>
    </products>
</prestashop>

我不知道为什么它不起作用。它看起来应该有效,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

好吧我自己修好了。当我将网址中的$("#product_name").text()更改为$("#product_name").val()时,一切都开始有效了。简而言之,将.text()更改为.val()