使用jQuery查找XML节点并将其放入现有HTML表中

dmo*_*moz 8 html xml ajax jquery

我正在尝试从XML Feed中提取一些股票信息并将其写入我网站上的某些现有div.

更新:由于CORS,我现在正在使用php代理.见下面的代码.

更新2:好的,到达那里.我下面更新的jQuery是第一个stockPrice变量,但不是剩下的三个.为所有这些数据提取的数据都是数字,所以我不确定为什么只有一个会工作.

这是我的HTML:

<div class="sidenavwrap">

    <div class="sidenavhd"><p class="stocktitle">XXXX (Common Stock)</div>


    <div class="ctcol3"><p class="stocklft">Exchange</p></div>
    <div class="ctcol4"><p class="stocklft">NASDAQ (US Dollar)</p></div>    
    <div id="stock-divider"></div>  

    <div class="ctcol3"><p class="stocklft">Price</p></div>
    <div class="ctcol4"><p class="stocklft" id="stockPrice"></p></div>  
    <div id="stock-divider"></div>

    <div class="ctcol3"><p class="stocklft">Change (%)</p></div>
    <div class="ctcol4"><p class="stockpriceneg" id="changePercent"></p></div>  
    <div id="stock-divider"></div>

    <div class="ctcol3"><p class="stocklft">Volume</p></div>
    <div class="ctcol4"><p class="stocklft" id="stockVolume"></p></div> 
    <div id="stock-divider"></div>

    <p style="text-align: center;">Minimum 10 minute delay</p>


    <div id="stock-divider"></div>  

    <br><br><br>
<!-- end sidenavwrap --></div>
Run Code Online (Sandbox Code Playgroud)

这是我的proxy.php:

// Set return content type
header('Content-type: application/xml');

// Website url to open
$url = 'http://xml.corporate-ir.net/irxmlclient.asp?compid=XXXXXX&reqtype=quotes';

// Get the content
$handle = fopen($url, "r");

// If there is something, read and return
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)

这是我通过代理提取数据的jQuery:

<script>
$(document).ready(function(){

    $.get("includes/proxy.php", function (data){

        // Some callback functions
        var stockPrice = ($(data).find('Trade').text());
        var changeValue = ($(data).find('Change').text());
        var stockVolume = ($(data).find('Volume').text());

        var changePercentLong = (changeValue / (stockPrice - changeValue)) * 100;
        var changePercent = changePercentLong.toFixed(2);

        $('#stockPrice').html('$' + stockPrice);
        $('#changePercent').html(changeValue + ' (' + changePercent + '%)');
        $('#stockVolume').html(stockVolume);

        if (changeValue >= 0) {
            $('#changePercent').removeClass('stockpriceneg').addClass('stockprice');
        } else {
            $('#changePercent').removeClass('stockprice').addClass('stockpriceneg');
        }

    });

});
</script>
Run Code Online (Sandbox Code Playgroud)

更新2:仍然没有在控制台中出现任何错误,现在我有第一个变量显示正确,但其他人只显示0(他们应该是-0.23,一些数学与前一个变量,5039270分别):

我的前端结果

我认为这只是我的jQuery中的一个语法错误,但是我在JS/jQuery中发现它并不够完善.我相信更有经验的人可以在一秒钟内发现问题.谁能告诉我这里我做错了什么?非常感谢!

dmo*_*moz 4

这是最终与我在原始问题中发布的 PHP 代理一起使用的 jQuery:

<script>
$(document).ready(function(){

    $.get("includes/proxy.php", function (data){

        // Some callback functions
        var stockPrice = ($(data).find('Trade').text());
        var changeValue = ($(data).find('Change').text());
        var stockVolume = ($(data).find('Volume').text());

        var changePercentLong = (changeValue / (stockPrice - changeValue)) * 100;
        var changePercent = changePercentLong.toFixed(2);

        $('#stockPrice').html('$' + stockPrice);
        $('#changePercent').html(changeValue + ' (' + changePercent + '%)');
        $('#stockVolume').html(stockVolume);

        if (changeValue >= 0) {
            $('#changePercent').removeClass('stockpriceneg').addClass('stockprice');
        } else {
            $('#changePercent').removeClass('stockprice').addClass('stockpriceneg');
        }

    });

});
</script>
Run Code Online (Sandbox Code Playgroud)