2009-05-15 4 views
0

Возможно ли это? Я хочу вытащить цену продукта из файла csv и привязать эту цену к ее конкретному номеру детали.загрузить файл csv в файл javascript

Я делаю это для веб-сайта, и одновременно изучаю программирование скриптов, и я не уверен, как это сделать.

Файл 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 - ваш друг. Вы можете получить исходный CSV из responseText.

Затем вам нужно разобрать его.

Если у вас очень простой 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 может анализировать изначально, прежде чем отправлять его клиенту.

Для этой конкретной задачи я, вероятно, забыл бы о том, чтобы полностью выполнить ее на стороне клиента и просто сделать все на сервере. Я не вижу большой пользы от того, чтобы оттолкнуть эту работу клиенту. (Хотя, по общему признанию, я не знаю всех деталей).

+0

вы правы, когда говорите: «CSV не такой простой формат данных, как он выглядит в первую очередь». К счастью, я только что закончил библиотеку, которая может ее обработать. http://code.google.com/p/jquery-csv/. –

0

Если вам нужен парсер JavaScript CSV, который поддерживает более сложные части CSV RFC, вы можете взглянуть на my implementation of a parser - но обратите внимание, что это всего лишь первая версия, которую все еще нужно немного очистить.

+0

FYI, ссылка мертва. –

Смежные вопросы