0

我正在使用 php 脚本将 json 数据从另一个域传递到我的 javascript 文件。我的代码适用于大多数响应。但是,在某些情况下,会有更长的值,其中的行被“\r\n\r\n”分隔,在这些情况下,当我尝试解析结果时会出现错误。我认为可能是“\r\n\r\n”导致了错误,并希望在将它传递给我的 javascript 之前用我的 php 脚本中的空格替换该字符串,但我不确定如何 - 我是个新手。

php脚本:

回声“变种预测='”;
包括(' 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 本身中替换,而不是响应数据:

回声“变种预测='”;
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

永远不应该使用include抓取外部 URL 以在您的应用程序中使用。您无法控制输出,因此您无法预测脚本的行为方式。


也就是说,不要使用 ,而是include考虑使用curlor file_get_contents

看一个类似的问题,我看到那个 API 支持JSONP. 这正是您想要的,而您根本不必构建服务器端中继。

尝试将callback参数添加到请求 URL。您可以从原始页面中的 javascript 代码调用它,它将运行该callback值指定的函数。

于 2013-04-09T02:52:04.287 回答