将csv文件加载到javascript文件中

时间:2009-05-15 19:46:01

标签: javascript

这可能吗?我想从csv文件中提取产品的价格,并将该价格与其特定的部件号相关联。

我正在为一个网站做这个,我正在学习脚本编程,我不确定如何做到这一点。

JS文件将调用csv文件并从中提取价格和部件号。

从那里JS文件将创建一个与Paypal购物车一起使用的表单。

这是添加到购物车按钮的paypal购物车代码:

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="XXXXX">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="PartNumber1">
<input type="hidden" name="amount" >
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="products">
<input type="hidden" name="cn" value="Add special instructions to the seller">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="weight" value=".5">
<input type="hidden" name="weight_unit" value="lbs">
<input type="hidden" name="add" value="1">
<input type="hidden" name="bn" value="PP-ShopCartBF:btn_cart_LG.gif:NonHosted">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

使用我添加到此按钮的变量,JS文件看起来与此类似:

function CalculateOrder(form)
{

if (form.item_name.value == "PartNumber1"
{
form.amount.value = (The price variable would go here);
}

if (form.item_name.value == "PartNumber2"
{
form.amount.value = (The price variable would go here);
}
}

在JS文件中此代码之前我需要的是加载csv文件并输出价格和部件号的代码。 JS文件将搜索标记为“PartNumber1”的部件号,并从csv文件中输出适当的价格。

请帮助!!

3 个答案:

答案 0 :(得分:5)

这是可能的,但很可能更麻烦,那么值得。

首先,您必须获取CSV数据。这很简单,只要它与站点位于同一服务器上 - XMLHttpRequest就是你的朋友。您可以从responseText中获取原始CSV。

然后你需要解析它。

如果您有一个非常简单的CSV文件,那么您可以先在新行上分割(以获取每一行),然后在逗号上分割(以获取每一列)。

没有测试,这样的事情可能会起到作用:

var csv = myXHR.responseText;
var rows = csv.split("\n");
for (var i = 0; i < rows.length; i++) {
  rows[i] = rows[i].split(",");
}

然后,您可以查找所需的部件号:

var getPart = function getPart(partNumber) {
  for (var i = 0, j < rows.length; i < j; i++) {
    if (row[i][partNumberColumnIndex] === partNumber) {
      return row[i];
    } 
  }
};

但是, CSV并不像首先看到的那样简单

如果任何数据中有逗号或新行,那么您不能简单地拆分这些字符,因为您必须注意引号字符。

如果我在客户端上有我真正想要处理的CSV数据,那么我会使用Text::CSVJSON::Any转换为JavaScript可以在将其发送到客户端之前本地解析的格式

对于这个特殊的任务,我可能会忘记完全做客户端,只是在服务器上做所有事情。把这项工作推给客户,我看不出多少好处。 (虽然,诚然,我不知道所有的细节。)

答案 1 :(得分:1)

前段时间我写了script which downloads a CSV and plots the points。也许这对你来说是一个很好的起点。

答案 2 :(得分:0)

如果您需要支持CSV RFC的棘手部分的JavaScript CSV解析器,您可能需要查看my implementation of a parser - 但请注意它只是第一个版本,仍需要稍微清理一下

相关问题