2017-08-02 13 views
-1

たとえば、http://test.com/a.txtファイルがあります。私はそれを行うことができますどのようにテキストファイルからvar値を取得するには?

<script> 
... 
var list = [ ***I want to get that .txt file as values here.*** ]; 
... 
</script> 

結果

<script> 
... 
var list = [ 
['http://a.com', false], 
['http://b.com', false], 
['http://c.com', false], 
['http://d', false] 
]; 
... 
</script> 

['http://a.com', false], 
['http://b.com', false], 
['http://c.com', false], 
['http://d', false] 

私は以下のようなVaRの値としてこのファイルを使用したいですか? 私はjavascriptのコードの下に試してみました:

jQuery.get('http://test.com/a.txt', function(data) { 
// The type o breaking line caracter will vary depending on OS 
var values = data.split("\n");  
var List = values[values.length-1];    
}); 

しかし、それは動作しませんでした...

+2

最初にテキストファイルを取得できなかった可能性があるため、動作しませんでした。ブラウザから外部サイトを呼び出すことは非常に難しく、クロスドメインポリシーによって禁止されることがあります。 –

+0

要求が可能な場合は、おそらくJSON.parse –

+0

です。要求が許可され、JSONPを使用している場合は可能です。もっと詳しく読む:https://en.wikipedia.org/wiki/JSONP –

答えて

0

あなたは、そのファイルと同じ起源を持つページ上でこれをやっている場合(Same Origin Policyを参照)、またはそのファイルのサーバーサポートしている場合あなたのサイトからcross-origin requests、あなたは簡単に[]でそれをラップし、変換することにより、JSONとしてそれを解析でき'"へ:

jQuery.get('http://test.com/a.txt', function(data) { 
    var list = JSON.parse("[" + data.replace(/'/g, '"') + "]"); 
    // ... 
}); 

当然ながら、これは、'の中に'の引用文字列が含まれていることを前提としています。

サーバがでないことが起源となっている場合は、が許可されていますが、ブラウザからはできません。自分のサーバーに要求を行い、サーバーが相手側から要求するようにする必要があります。あなたは、あなたの質問に表示されて、それがあった場合、それがうまくいくため

I just tried it but it didn't work. It shows an error message. Uncaught SyntaxError: Unexpected token ; in JSON at position 10233 at JSON.parse()

はその後のデータが、ではありません:あなたのコメントを再


var data = 
 
    "['http://a.com', false],\n" + 
 
    "['http://b.com', false],\n" + 
 
    "['http://c.com', false],\n" + 
 
    "['http://d', false]"; 
 
console.log("data:"); 
 
console.log(data); 
 
console.log("parsed:"); 
 
var list = JSON.parse("[" + data.replace(/'/g, '"') + "]"); 
 
console.log(list);
.as-console-wrapper { 
 
    max-height: 100% !important; 
 
}

+0

私はそれを試しましたが、動作しませんでした。エラーメッセージが表示されます。 未知のSyntaxError:予期しないトークン。 JSONの位置10233 JSON.parse() – Jenny

+0

@ジェニー:データはあなたの質問に表示されているとおりではありません。更新された答えの証明を見てください。 –

+0

私はこの問題を解決しました。ありがとうございました! – Jenny

1

あなたが原因cross origin requests policyの、することはできません。

あなたが与えたもう1つのURLが、クロスオリジンのリクエストを許可するサーバーからのリンクだった場合は、JQuery.getが動作します。

しかし、これはなので、はサーバーとなる可能性があります。Content-Type: text/plainであり、JSONオブジェクトではありません。つまり、他の答えに示されているように解析する必要があります。


ハック

サーバーと同期するデータを必要としない場合は、そのようなbashののcurlとして、他のスクリプト言語を使用して、サーバー上のファイルをダウンロードすることです。そしてJavaScriptで照会し、このファイルを使用します。

# bash 
curl 'http://test.com/a.txt' -o a.txt 
jQuery.get('/a.txt', function(data) { 
    /* use data here, may need to be parsed as in other answer */    
}); 
+2

サーバーがそのようなクロスドメインコールを許可していれば、それは可能ですが、可能性は低いです。 –

+0

以下のように変数全体を呼び出すことも不可能ですか? http://test.com/a.txt var list = [ ['http://a.com'、false]、 ['http://b.com'、false]、 [' [http:// d '、false] [' http: 、その後、 Jenny

+1

variable_callingはどういう意味ですか? –

関連する問題