2013-07-15 2 views
0

저는 2 시간 동안 고민하고 있습니다.jQuery 장바구니 기능을 방해하는 .load()

나는 선 (Zen-Cart) 설치로 작업 중이며 일부 동적 배너를 던지기로 결정했습니다. 기본적으로 jQuery.get()을 사용하여 banner1.php에서 URL을로드합니다. - banner1.php는 몇 개의 URL (제품 페이지)의 배열을 가지며 배열에서 임의의 URL을 반향 출력합니다.

jQuery에 의해 임의의 URL이로드되면 jQuery.load() 함수를 사용하여 제품 이미지, 제품 가격 및 제품 이름을로드합니다.

이 모든 기능은 완벽하게 작동하지만로드() 함수가 Zen-Cart "리디렉션"기능을 방해하고있는 것 같습니다. 제품을보고 있다면 "제품 A"라고 부르 자. "로그인"버튼을 클릭하여 해당 페이지에서 로그인하십시오. 로그인 페이지로 이동 한 경우 로그인 정보를 입력하십시오 , "제출"을 누르십시오. 표준 결과는 사용자가 성공적으로 로그인하면 "제품 A"페이지로 되돌아갑니다. 그러나 내 작은 동적 jQuery 배너 조합을 사용하면 "제품 A"를 리디렉션하는 대신 jQuery.load()가 임의 배너를 생성하는 데 사용한 페이지 중 하나를로드합니다. 나는 각 동적으로 임의의 URL을로드, 3 개 배너가 있지만, 여기에 배너 하나의 예입니다

<script type="text/javascript"> 


$.get("banner1.php", function(getbannerlink1) { 

$(document).ready(function() { 


$("#banner1").load(getbannerlink1+ " #globalproductimage"); 

$('#banner1name').load(getbannerlink1+ " #productName", function(result) { 
var banner1text = $('#banner1name').html(); 
banner1text = jQuery(banner1text).text(); 
$("#banner1name").html(banner1text); 

}); 

$('#banner1price').load(getbannerlink1+ " #productPrices", function(result) { 
var banner1prices = $('#banner1price').html(); 
banner1prices = jQuery(banner1prices).text(); 
$("#banner1price").html(banner1prices); 

}); 


var bannerlink1 = $("<a>").attr("href", getbannerlink1); 
$("#banner1name").wrap(bannerlink1); 
$("#banner1price").wrap(bannerlink1); 
$("#banner1").wrap(bannerlink1); 
}); 

}); 
</script> 

것은, 내가 한번 고객 로그 부당 재 지정에 대해 너무 걱정하지 않아요 또한 문제가 고객이 실제로 Checkout 할 때 가장 실망스럽게 발생합니다. 예를 들어, 장바구니에 제품이있는 경우 체크 아웃 버튼을 클릭하면 로그인하라는 메시지가 표시되고 로그인 한 후에 표준 장바구니 기능을 계속 사용하는 대신 체크 아웃의 첫 번째 단계로 이동합니다 프로세스에서 동적 배너가로드 한 페이지 중 하나로 리디렉션합니다. 나는 이것을 어떻게 분류해야할지 모르겠다. 나는 쓸데없는 이상한 것을 시도했다.

if (sizeof($_SESSION['navigation']->snapshot) > 0) { 
     // $back = sizeof($_SESSION['navigation']->path)-2; 
     //if (isset($_SESSION['navigation']->path[$back]['page'])) { 
     // if (sizeof($_SESSION['navigation']->path)-2 > 0) { 
     $origin_href = zen_href_link($_SESSION['navigation']->snapshot['page'], zen_array_to_string($_SESSION['navigation']->snapshot['get'], array(zen_session_name())), $_SESSION['navigation']->snapshot['mode']); 
     //   $origin_href = zen_back_link_only(true); 
     $_SESSION['navigation']->clear_snapshot(); 
     zen_redirect($origin_href); 
    } else { 
     zen_redirect(zen_href_link(FILENAME_DEFAULT, '', $request_type)); 
    } 

이 도와주세요 : 참조를 위해서,이 필요할 수 있습니다, 이것은 로그인 후 리디렉션을 처리하는 젠 - 장바구니 기능입니다! 아마도 이것을 수행하는 더 쉬운 방법이있을 것입니다 :/

로드하는 페이지가 항상 jQuery.load()가로드 한 마지막 배너라는 것을 눈치 챘습니다. 필자가 언급 한 것처럼 총 3 개의 배너가 있으므로 배너 2의 가격이 마지막으로로드 된 경우 리디렉션에로드 된 URL입니다.

편집 : banner1.php (이것은 단순히 배열에서 임의의 URL을 생성하지만 현재 테스트 목적으로 난 단지 배열에서 하나 개의 URL을) :

<?php 
$strings = array('http://example.com/index.php?main_page=product_info&cPath=3&products_id=104'); 
echo $strings[array_rand($strings)]; 
?> 
+0

banner1.php에 대한 코드를 확인해야하지만, banner1.php가 나중에 Zen에서 리디렉션을 수행하는 데 사용되는 세션 변수 $ _SESSION [ 'navigation']을 수정하고있는 것으로 보입니다. –

+0

banner1.php에 대한 코드를 포함하도록 원래 게시물을 편집했습니다. 그러나 나는 banner1.php가 그렇게하고있는 것은 확실하지 않습니다. 나는 $ .get ("banner1.php ", function (getbannerlink1) {그리고 로컬 변수에서 직접 URL을 가져 오는 load()가 있습니다.이 문제를 일으키는 load() 함수가 확실합니다. – StuyvesantBlue

답변

0

그것은 배너 페이지가 나타납니다 스냅 샷 href를 설정합니다. 세션 탐색 스냅 샷을 설정하고있는 배너 URL에 Zen 장바구니 라이브러리 중 일부가 포함되어 있다고 가정합니다. 어쩌면 스냅 샷의 URL을 무시하도록 설정할 수 있습니다.

배너 코드를 추가하면이 문제를 해결하는 데 도움이 될 수 있습니다.

내가 추천하지는 않지만 로그인 후 특정 페이지로 리디렉션되지 않도록 논리를 추가 할 수 있습니다.

+0

조금 늦게 내 답장을 보냈지 만, URL을 호출 할 때 url에 쿼리 문자열을 추가하고 헤더에 특정 쿼리 문자열이 포함되어있는 경우 if 문을 사용하여 header_php.php 파일을 편집하여 기록 스냅 샷에 페이지를 추가하는 것을 무시했습니다. – StuyvesantBlue