0

ユーザーの位置を取得する方法として、Google の API を利用しようとしています。これが完了したら、これを外部の PHP スクリプトに渡します。このスクリプトは、JavaScript コードをさらに出力します。ただし、PHP スクリプトの呼び出しに問題があります。

<script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAKw7Q"></script
<script type="text/javascript">
    if(google.loader.ClientLocation)
    {
        visitor_countrycode = google.loader.ClientLocation.address.country_code;
    }
</script>
<script type='text/javascript' src='http://www.mysite.com/widget.php?mid=12&c=visitor_countrycode'>
</script>

上記は私のDBから取得したものです。ただし、変数visitor_countrycodeは HTML で生成されずvisitor_countrycode、Javascript 値ではなく文字列 " " が含まれています。

私はそれを理解することはできません。

アップデート

私は実際にJQueryを使用できます:

私はこれを試しましたが、あまりうまくいきませんでした。

$("<script type='text/javascript' scr='http://www.mysite.com/widget.php?mid=12&c="+visitor_countrycode+"'").appendTo('body');

何か問題がありますか?

4

2 に答える 2

3

そうですね、この行:

<script type='text/javascript' src='http://www.mysite.com/widget.php?mid=12&c=visitor_countrycode'>
</script>

...単に URL、" http://www.mysite.com/widget.php?mid=12&c=visitor_countrycode " を取得しています。変数は評価されていません-プレーンパラメーターとして渡されています。

動的に生成された URL を取得したい場合は、新しい <script> 要素を作成してヘッドに追加する必要があります。そのようです:

var visitor_countrycode = 'foo';

// create the new script element
var script_element = document.createElement('script');

// visitor_countrycode will be evaluated here.
script_element.src = 'http://www.mysite.com/widget.php?mid=12&c=' + visitor_countrycode;

// this gets the <head>, and then appends the newly-created script element.
document.getElementsByTagName('head')[0].appendChild(script_element);

出来上がり。

于 2009-08-15T16:19:21.367 に答える
0

単純な HTTP リクエストを使用してその PHP スクリプトを呼び出すこともできます。そうすれば、結果を取得して、PHP スクリプトがリクエストを正しく処理したかどうかに基づいて何かを実行することもできます。

<script type="text/javascript">
var http = false;

if(google.loader.ClientLocation)
{
    visitor_countrycode = google.loader.ClientLocation.address.country_code;

    if(navigator.appName == "Microsoft Internet Explorer") {
        http = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        http = new XMLHttpRequest();
    }

    http.open("GET", 'http://www.mysite.com/widget.php?mid=12&c=' + visitor_countrycode);
    http.send(null);
}
</script>
于 2009-08-15T16:24:37.473 に答える