【问题标题】:Fetching JSON data using JS from a third party使用 JS 从第三方获取 JSON 数据
【发布时间】:2026-01-14 01:20:05
【问题描述】:

我正在尝试使用某种服务来检查代理。他们有一个简单的 API,可以从中返回 JSON。我想在我的服务器上获取这个 JSON。

无论我做什么,我都会收到 CORS 请求问题或 SyntaxError: missing ; before statement 消息。

这是我的代码:

<h1>Test Page</h1>
<a href="#" onclick="checkProxy()">Test Button</a>


<script>
function checkProxy() {
  console.log("Checking...");
  $.ajax({
    url: 'http://api.ip2proxy.com/?ip=105.159.246.30&key=demo',
    dataType: 'jsonp',
    success: function(data){
      console.log(data);
    }
  });
}

单击我的“按钮”会调用该函数,该函数会返回上述语法错误。将数据类型更改为 JSON 会给我一个 CORS 错误。

奇怪的是,当我使用不同的 URL(我在另一个 * 线程中找到的示例:http://www.locationbox.com.tr/locationbox/services?Key=3430000202000191008400080609030X20201090060050260003069&amp;Cmd=IlList)时,它会很好地记录数据。

【问题讨论】:

  • 那么数据可能不打算公开共享。你检查过数据源的API吗?

标签: javascript json cors jsonp


【解决方案1】:

我想在我的服务器上获取这个 JSON。

您需要编写在服务器上运行的代码才能做到这一点。您的代码失败的原因是您在浏览器上运行它,Same Origin Policy 发挥作用:该 API 端点未通过CORS 授予您页面的来源访问权限。除非他们允许您访问,或者他们提供您可以使用的 JSONP 端点,否则您不能直接从浏览器查询它。

【讨论】:

  • 所以我必须使用 PHP 获取 JSON?
  • @DanielJ:不,但您必须在服务器上获取它。您可以使用 PHP、Python、JavaScript(在 NodeJS 中,在 JVM 中)、Java、C# 或 VB .Net,... :-)
  • 啊,对。有时我忘记了服务器端并不总是意味着 PHP!不过,在我的情况下确实如此。 :) 非常感谢!这解决了我的问题。我现在可以获取数据了。
  • @t-j-crowder:那么为什么我提供的一个示例 URL 给出了语法错误,而另一个有效?它们都是有效的 JSON。
  • @DanielJ: JSONP != JSON。下面是一个有效 JSONP 响应的示例:callback({"foo":"bar"})。下面是一个有效 JSON 响应的示例:{"foo":"bar"} 您的示例 ajax 调用告诉 jQuery 它正在使用 JSONP。大概您的一个网址是,另一个不是。