ここに最初のタイマーはいいので:3。URLを書き換えている場合404の
StackExchangeのようなアフィリエイトタグを書き換えるためにAmazon URLを書き換えるjQuery関数を記述しようとしていますが、捻じれています。
主な違いは、ユーザーに最も近いAmazonストアを試してみることです。 amazon.de - ドイツ人の訪問者のため。 Amazonの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を書き換えますが、方程式にajaxを導入すると、スクリプトはURLの書き換えに失敗します。
EDIT上記
$('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のcURLのを使用して、それを開き、新しいリンクや「404」のいずれかを返します。 。
私は$(これ)が正しくリンクを参照していないと思っていますが、なぜ私は考えていません。
おかげで、私はいくつかのPHPでそれをしようとするに調査しておこう。私のYahoo APIの例でURLの書き換えが行われない理由についての洞察はありますか?私はこのメソッドを外部APIリクエストとして使用したいと思うので、うまくいけば私のサーバー負荷を減らすでしょう。 – killgallic