0

PHPスクリプトを使用して、jsonデータを別のドメインからjavascriptファイルに渡しています。私のコードは、ほとんどの応答に対して正常に動作します。ただし、いくつかのケースでは、"\r\n\r\n" で区切られた行を持つはるかに長い値があり、そのような場合、結果を解析しようとするとエラーが発生します。「\r\n\r\n」がエラーを引き起こしている可能性があると思います.phpスクリプトでその文字列をスペースに置き換えてからjavascriptに渡すことを望んでいましたが、方法がわかりません-私は初心者です。

PHP スクリプト:

echo "var 予測 ='";
include(' http://ws1.airnowgateway.org/GatewayWebServiceREST/Gateway.svc/forecastbyzipcode?zipcode= ' . $zipcode . '&format=json&key=[myKey]');
エコー "';";

JavaScript コード:

$(document).ready(function() {
$.get(url, function(data) {
myData = JSON.parse(forecast);
... など

そのphpスクリプト内でstr_replaceを使用できることを望んでいましたが、応答データではなくURL自体内で置き換えているため、これを間違って設定したことはわかっています:

echo "var 予測 ='";
include(str_replace("\r\n"," "," http://ws1.airnowgateway.org/GatewayWebServiceREST/Gateway.svc/forecastbyzipcode?zipcode= " . $zipcode . "&format=json&key=[myKey]") );
エコー "';";

私は正しい軌道に乗っていますか?

4

2 に答える 2

1

問題は、include が単に URL への呼び出しの結果をエコーアウトすることです。使ってみてくださいfile_get_contents:

echo "var forecast='";  
$res = file_get_contents("http://ws1.airnowgateway.org/GatewayWebServiceREST/Gateway.svc/forecastbyzipcode?zipcode=" . $zipcode . "&format=json&key=[myKey]");
echo str_replace("\r\n",$res); 
echo "';";
于 2013-04-09T02:51:51.403 に答える
1

アプリで使用する外部 URL を取得するために を使用しないください。include出力を制御できないため、スクリプトがどのように動作するかを予測することはできません。


つまり、 を使用する代わりに、またはを使用することincludeを検討してください。curlfile_get_contents

同様の質問を見ると、その API が をサポートしていることがわかりますJSONP。これは、サーバー側のリレーをまったく構築する必要なく、まさにあなたが望むことを行います。

callbackリクエスト URL にパラメータを追加してみてください。元のページの JavaScript コードから呼び出すことができ、callback値で指定された関数を実行します。

于 2013-04-09T02:52:04.287 に答える