1

Json.Json を使用して Magento 外部の Magento セッション データにアクセスしようとしていますが、IE では正常に動作していますが、json を使用して Magento セッション データにアクセスしようとすると動作しません。コードは FF、Chrome、Opera で動作しますが、IE 7 では動作しません

ここに私のserver.phpファイルがあります

<?php
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::app();

 if(isset($_GET['cart_item'])){

    Mage::getSingleton('core/session', array('name'=>'frontend'));
    $_cartQty=0;
    $_cartItem='My Bag is empty';

    foreach (Mage::helper('checkout/cart')->getCart()->getItems() as $item){
        $_cartQty+=$item->getQty();
    }

    if ($_cartQty>0)
        $_cartItem='My Bag ('. $_cartQty.')';



    echo $_GET['callback'] . '('.json_encode(array('response'=>$_cartItem)).');';
}
?>

ここに私のclient.htmlファイルがあります

<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript">

function change_cart_item(){

var cartItemUrl=jQuery('#cart_item_url').val();

    jQuery.getJSON(cartItemUrl, function(json) {
        var result=json.response;
        alert(result);
        //var cartItem = jQuery(result).find('#cart_item').html();
        //jQuery("#show_cart span").html(result);               
    });
return false;
}


</script>

<input id="cart_item_url" name="cart_item_url" type="hidden" value="http://test.com/ie.php?callback=?&cart_item=cart_item" />

<input type="button" onclick="change_cart_item()"  value="Change cart item" />

上記のコードは、IE では常に「My Bag is empty」を返します。

4

2 に答える 2

2

/ie.phpIEがCookieヘッダーをスクリプトに送信しない理由を確認することをお勧めします。IEは、Cookieパスの値を別の方法で評価する必要があります。
回避策として、JSONを返すだけの通常のMagentoアクションコントローラーを実装してみてください。これは、IEによってCookieヘッダーを受信するようにバインドされているためです(そうしないと、Magentoのストアフロント全体がIEで機能しません)。
アクションコントローラーからJSONを返すには、次を使用します。

public function jsonAction()
{
    $_cartItem = 'My Bag is empty';
    $_cartQty = Mage::helper('checkout/cart')->getItemsQty();

    if ($_cartQty > 0) {
        $_cartItem = 'My Bag ('. $_cartQty.')';
    }

    $this->getResponse()->setBody(
        $_GET['callback'] . '(' . Mage::helper('core')->jsonEncode(array('response'=>$_cartItem)).');'
    );
}
于 2012-07-03T09:44:36.710 に答える
0

IE の WinInet の実装にはバグがあります。ファイル名を含むパスを持つ Cookie がある場合、IE は Javascript の document.cookies プロパティを介してその Cookie を利用可能にしません。ただし、このような Cookie はサーバーに送信する必要があります。

于 2012-07-06T15:57:45.800 に答える