0

环境:我使用 isml 进行视图(需求软件模板),浏览器是 chrome。

我正在尝试存储购物商店 ID:

function cacheStores(data) {
        cachedStores = {};
        for (var i = data.length - 1; i >= 0; i--) {
            var store = data[i];
            console.log(store);
            cachedStores[store.physicalId] = store;

        }

当我在页面上时它可以工作,但是当我离开页面(到下一页)并尝试返回它时,该值为空。

ISML:

<input type="hidden" name="dwfrm_billing_shippingAddress_addressFields_houseNumber" value=>

即功能设置名称和值

    function setShippingField(name, value) {
        jQuery('input[name=' + name + ']', addressContainer).val(value);
    }
    //only set if housenumber is a field
    if ($houseNumber.length) {
        var matches = shippingAddress1.match(/\d+/);
        if (matches) {
            shippingHouseNum = matches[0];
            shippingAddress1 = shippingAddress1.replace(shippingHouseNum, '');
            setShippingField(checkout.initFields.s_houseNumber, shippingHouseNum);
        }
    }
        // set hidden fields
        setShippingField(checkout.initFields.s_title,     billingTitle);
        setShippingField(checkout.initFields.s_lastName,  shippingLastName);
        setShippingField(checkout.initFields.s_firstName, shippingFirstName);
        setShippingField(checkout.initFields.s_address1,  shippingAddress1.substr(0, MAX_ADDRESS1_LEN));
        setShippingField(checkout.initFields.s_address2,  shippingAddress2);
        setShippingField(checkout.initFields.s_address3,  store.physicalId);
        setShippingField(checkout.initFields.s_zip,       store.address.postalCode);
        setShippingField(checkout.initFields.s_city,      shippingCity);
        setShippingField(checkout.initFields.s_country,   billingCountry);

        // set visible labels
        jQuery('#customer', addressContainer).text(billingTitle + " " + shippingAddress2);
        jQuery('#shopname', addressContainer).text(shippingLastName + ' ' + shippingFirstName);
        jQuery('#shopstreet', addressContainer).text(shippingAddress1 + ' ' + shippingHouseNum); // includes house number
        jQuery('#shopid', addressContainer).text(store.physicalId); // we're not using shop ids here
        jQuery('#shopzipcity', addressContainer).text(store.address.postalCode + ' ' + shippingCity);


        window.top.close();
    }
4

1 回答 1

0

它看起来像客户端问题,即您遇到的问题。我认为这与您使用的服务器端逻辑无关。

setShippingField(checkout.initFields.s_address3,  store.physicalId);

这不应该与 s_address3 字段不同的东西作为键吗?

从您的代码片段中,尚不清楚您在 checkout 变量及其 initFields 成员中到底有什么。还有你传递给 cacheStores 函数的 data 参数的具体内容。

附带说明一下,在不同的范围内对不同的事物使用相同的标识符是不好的做法(一个范围内的缓存存储是函数,而在另一个范围内是对象。)

于 2015-09-28T13:06:08.453 回答