为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中格式化 HTML 下拉列表的 XML 响应

在 PHP 中格式化 HTML 下拉列表的 XML 响应

海绵宝宝撒 2023-03-18 16:15:38
我有一个 javascript onChange 函数,它调用一个 PHP 文件来运行,获取 UPS 费率,并返回一个带有费率下拉列表的 HTML 更新。我让这一切工作得很好,但现在我需要根据比较向选项列表添加一个项目。Java脚本:function fetch_UPS(el){    var zip = el;    if (zip.length !== 5) {        alert ("Please enter a valid 5-digit US zip code.");        return false;    }    else {        var cartID = getCookie('cornerstoreid');        document.getElementById('blackoverlay').style.display = "block";        document.getElementById('pp_checkout').style.display = "none";        $.ajax({            type: 'GET',            cache: false,            url: 'fetch_rates.php',            data: { zip : zip, cartID : cartID },            success: function(response){                var droplist = document.getElementById("shipping_field");                var htmlchange = "<span class=\"cart_opt_label\">Shipping: </span>" + response;                droplist.innerHTML = htmlchange;                document.getElementById('blackoverlay').style.display = "none";                document.getElementById('btn_sub_txt').innerHTML = '<input type="button" id="pp_checkout" value="" onclick="paypal_checkout_submit();" style="display:none;" />Please update shipping to continue';            }        });    }}用于返回的 PHP(在返回之前删除所有位)if ($response == false) {        throw new Exception ( "Bad data." );    } else {        // save request and response to file        $fw = fopen ( $outputFileName, 'w' );        fwrite ( $fw, $response );        fclose ( $fw );                // Load XML file        $xml = new DOMDocument;        $xml->load($outputFileName);        // Load XSL file        $xsl = new DOMDocument;        $xsl->load('style.xsl');        // Configure the transformer        $proc = new XSLTProcessor;        // Attach the xsl rules        $proc->importStyleSheet($xsl);        echo $proc->transformToXML($xml);    }在测试中,我的IF语句只在返回的末尾添加一个字符串,但是如果我尝试select从 XSL 中删除结束标记并将其添加到 PHP 文件中,它会丢弃格式化的返回并且只返回IF陈述。我不做很多编码,而且由于中间通常有 6 个月到一年的时间,所以我经常落后于当前的编码要求。我确信我缺少一些 XSL 规则,但我已经尝试了我能想到的所有搜索组合,但没有提出任何解决方案。
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我想到了。

当我最初删除最后两个选项和结束标记时,我留在了SELECTXSL 样式表中的开始标记中。这导致样式表失败,因为它有一个没有结束标记的开始标记。一旦我SELECT从 XSL 样式表中删除了标记行并对 PHP 进行了以下更改,一切都完美无缺。

这是对 PHP 的更改:

$openTag = '<select name="shipping_options" id="shipping_options">';

$closeTag = '<option value=\'8!!!0.00\'>Please call for freight pricing</option>

        <option value=\'9!!!0.00\'>Please call for international pricing</option>

    </select>';


....


else {

        // save request and response to file

        $fw = fopen ( $outputFileName, 'w' );

        fwrite ( $fw, $response );

        fclose ( $fw );

        

        // Load XML file

        $xml = new DOMDocument;

        $xml->load($outputFileName);


        // Load XSL file

        $xsl = new DOMDocument;

        $xsl->load('style.xsl');


        // Configure the transformer

        $proc = new XSLTProcessor;


        // Attach the xsl rules

        $proc->importStyleSheet($xsl);


        echo $openTag;

        echo $proc->transformToXML($xml);

        if ($to_height > 0 && $to_height <= 2) {

            echo $openTag . 'extra text here' . $closeTag;

        }

        else {

            echo $openTag . $closeTag;

        }

    }


查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信