这可能吗?我想从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文件中输出适当的价格。
请帮助!!
答案 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::CSV和JSON::Any转换为JavaScript可以在将其发送到客户端之前本地解析的格式
对于这个特殊的任务,我可能会忘记完全做客户端,只是在服务器上做所有事情。把这项工作推给客户,我看不出多少好处。 (虽然,诚然,我不知道所有的细节。)
答案 1 :(得分:1)
前段时间我写了script which downloads a CSV and plots the points。也许这对你来说是一个很好的起点。
答案 2 :(得分:0)
如果您需要支持CSV RFC的棘手部分的JavaScript CSV解析器,您可能需要查看my implementation of a parser - 但请注意它只是第一个版本,仍需要稍微清理一下