첫 번째 타이머가 좋음 : 3.URL을 다시 작성하는 경우 404의
아마존 URL에 태그를 포함하도록 재 작성하는 jQuery 함수를 작성하려고합니다. StackExchange와 유사하지만 꼬임이 있습니다.
가장 큰 차이점은 가장 가까운 Amazon 스토어로 사용자를 연결하려고한다는 것입니다. amazon.de - 독일어 방문자. 일부 국가에서 아마존의 ASIN이 다르므로 처음에는 새로운 링크를 확인하고 싶습니다. 404의 경우 분명히 내 방문자를 안내하고 싶지 않습니다. [1]
다음은 amazon.com에 대한 링크를 선택하는 코드입니다. ASIN 번호를 잡고 제휴 태그를 포함한 제품에 대한 간단한 링크를 씁니다.
var tld_table = {'GB' : ".co.uk",'DE' : ".de",'CN' : ".cn",'AU' : ".ca",'IT' : ".it",'FR' : ".fr",'CA' : ".ca",'JP' : ".jp",};
var country = $.cookie("CountryCode");
//$.cookie by http://plugins.jquery.com/files/jquery.cookie.js.txt
var tld = tld_table[country] || '.com';
var regex = RegExp("http://www.amazon.com/([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})");
$('a[href*="amazon.com"]').each(function(){
var url = $(this).attr('href');
m = url.match(regex);
if (m) { //if ASIN found
var ASIN = m[4];
var shorturl = "http://www.amazon"+tld+"/dp/" + ASIN + "?tag="+ affTag[tld];
//http test for 404
//if 404 do not rewrite
//else $(this).attr('href',shorturl);
}
});
이 잘 작동하고 URL의 재 작성하지만 내가 방정식으로 아약스를 소개 할 때 스크립트가 모든 URL의 재 작성하는 데 실패합니다.
편집
$('a[href*="amazon.com"]').each(function(){
var url = $(this).attr('href');
m = url.match(regex);
if (m) { //if ASIN found http://www.amazon.com/dp/B003DZ1Y8Q/?tag=derp
var ASIN = m[4];
var ajaxCall = $.get('ASIN.php?ASIN='+ASIN+'&tld='+tld+'&tag='+affTags[tld], function(data) {
var newlink = data;
console.log('New Link: '+newlink)
$(this).attr('href',newlink); //does not rewrite
})
ajaxCall.success(function() {
if(newlink != '404'){
$(this).attr('href',newlink);//does not rewrite
}
})
}
});
위 내가 현재 사용하려고 시도하고있는 코드가, ASIN.php는, & 요청 새로운 링크를 구축 PHP의 컬을 사용하여 열고 새 링크 또는 중 하나를 반환 '404' .
$ (this)가 링크를 올바르게 참조하지 못하고 있지만 그 이유는 모르겠습니다. is not allowed by Access-Control-Allow-Origin
그것은 기본적으로 자바 스크립트가 사용자의 도메인 외부의 URL을 검색 할 수 없습니다 것을 의미합니다 :
감사합니다. 몇 가지 PHP로 시도해보고자합니다. 내 Yahoo API 예제가 URL을 다시 쓰지 않는 이유에 대한 통찰력이 있습니까? 나는이 방법을 외부 API 요청으로 사용하여 내 서버로드를 줄이는 것을 선호한다. – killgallic