【问题标题】:load csv file into a javascript file将 csv 文件加载到 javascript 文件中
【发布时间】:2013-10-24 05:30:53
【问题描述】:

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

我正在为一个网站做这件事,同时我也在学习脚本编程,但我不确定如何去做。

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

从那里,JS 文件将创建一个用于 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 文件中输出适当的价格。

请帮忙!!

【问题讨论】:

  • 如果您真的要加载价格信息,您可能应该在服务器端这样做,以防止用户更改值。要么这样,要么在服务器端进行验证,以确保价格没有被篡改。

标签: javascript


【解决方案1】:

这是可能的,但很可能比值得的麻烦更多。

首先,您必须获取 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::CSV 和 JSON::Any 转换为 JavaScript 可以本地解析的格式,然后再将其发送到客户端。

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

【讨论】:

  • 当您说“CSV 不像最初看起来那样简单的数据格式”时,您是对的。幸运的是,我刚刚完成了一个可以处理它的库。 code.google.com/p/jquery-csv.
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多