0

JavaScriptでURLの内容を読みたいです。URL が私のドメインにないため、クロスドメインにアクセスできる中間層が必要です。PHP関数を使用してURLを読み取り、結果をjqueryを使用してjavascriptに返そうとしましたが、うまくいきませんでした。

ここに私の試用版があります:

「phpjs_test.php」という名前のphpファイルを作成しました

<?php
function get_data(){
  $url='http://asmary.dreameg.com/texttable.txt';
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
  $content = curl_exec($ch);
  $content = htmlspecialchars($content);
  curl_close($ch);
  $content = nl2br($content);
  return $content;
}
?>

これはJavaScriptコードです:

<script>
        $(document).ready(function () {
            //httpQuery("http://asmary.dreameg.com/texttable.txt");
            getOutput();
        });

        function getRequest() {
            var req = false;
            try {
                // most browsers
                req = new XMLHttpRequest();
            } catch (e) {
                // IE
                try {
                    req = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    // try an older version
                    try {
                        req = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {
                        return false;
                    }
                }
            }
            return req;
        }

        function getOutput() {
            var ajax = getRequest();
            ajax.onreadystatechange = function() {
                if (ajax.readyState == 4) {
                    document.getElementById('output').innerHTML = ajax.responseText;
                }
            };
            ajax.open("GET", "phpjs_test.php", true);
            ajax.send(null);
        } 

私はPHPにまったく慣れていないので、PHP関数さえ正しいかどうかわかりません。

4

2 に答える 2

0

XMLHTTPRequest を作成する代わりに、jQuery ajax メソッドを使用する必要があります。IE 用のコードを追加する必要はありません。さらに、jQuery ライブラリを既に読み込んでいます。また、PHP ファイルでヘッダーを Allow-Origin-Access に設定し、要求元の他のドメインを指定すると、AJAX 要求を作成して応答を取得できます。そうしないと、何も返されないか、開発ツールのネットワーク タブでそれが返されます。 403 - Forbidden が表示されます。

Access-Control-Allow-Origin 構文

于 2013-02-03T08:30:43.117 に答える
0

PHP ファイルを次のように変更します。

<?php
$url='http://asmary.dreameg.com/texttable.txt';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);
curl_close($ch);
$content = explode('~',$content);

foreach($content as $c)
{
    $records[] = explode('|',$c);
}
$content = json_encode($records);
echo $content;
?>

Javascript は、このような json 配列を受け取ります

[["1","name1","10","city1"],["2","name2","20","city2"],["3","name3","30","city3"],["4","name4","40","city4"],["5","name5","50","city5"],["6","name6","60","city6"],["7","name7","7","city7"],["8","name8","80","city8"],["9","name9","90","city9"],["10","name10","100","city10"],["11","name11","11","city11"],["12","name12","12","city12"],["13","name13","13","city13"],["14","name14","14","city14"],["15","name15","15","city15"],["16","name16","16","city16"],["17","name17","17","city17"],["18","name18","18","city18"],["19","name19","19","city19"],["20","name20","20","city20"],[""]]
于 2013-02-03T09:22:53.917 に答える