【问题标题】:How to GET data from end point using JavaScript?如何使用 JavaScript 从端点获取数据?
【发布时间】:2013-04-01 04:03:11
【问题描述】:

有一些数据存储在端点(url)。该文件是一个.jsp文件。

以下是数据。

{"successful":"true","rows":[{"zip":"56431","user_id":"35","name":"test"}]}

如何从该端点获取数据? www.test.com/test.jsp

即像这样的

var data = get("www.test.com/test.jsp"); 
var jsonObj = JSON.parse(data);

等等。

这可能吗?

【问题讨论】:

标签: java javascript jsp rest get


【解决方案1】:

如果您正在寻找 AJAX 解决方案,您可以使用此功能。它可以通过 URL 发送变量并从源 url 接收响应。

function get_(url, func)
{
 var http;
 try { http = new XMLHttpRequest(); } catch (e) { try { http = new ActiveXObject(\"Msxml2.XMLHTTP\"); } catch (e) { try { http = new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch (e) { alert(\"Your browser broke!\"); return false; } } }

 http.open(\"GET\", url, true);
 http.onreadystatechange = function() { if(http.readyState == 4) { func(http); } }
 http.send(null);
}

要使用它,下面是一个按钮如何触发调用并指定响应处理函数的示例:

HTML

<button onClick='get_("source_url.jsp", showResponse);'> Show the response </button>

JAVASCRIPT

function showResponse(h) { alert(h.responseText); }

需要明确的是,get_ 函数的第二个参数是对函数的引用。无论您在使用 get_ 函数时指定什么函数,它都会传递一个包含 .responseText 属性的参数,该属性是 source_url 文件的输出。

我一直使用这个功能,尽管我有另一个版本可以与我的 PHP 服务器一起使用来验证用户身份,这样就不会在未经授权的情况下从服务器加载/保存信息。

【讨论】:

  • 感谢输入插孔,不幸的是,我不熟悉 Ajax,所以我不知道如何实现 get_ 函数。如果不是,完整源代码的快速示例会很有帮助很麻烦。
  • 其实代码是完整的。 get_ 函数是一个普通的 javascript 函数。它的对应物是 showResponse javascript 函数。您需要做的就是将“source_url.jsp”替换为输出您希望页面接收的文本的实际文件名。举个例子,它甚至可以是一个静态的 html 文件。如果是 php,任何打印或回显的内容都将显示在警报对话框中。
【解决方案2】:

jQuery 让这一切变得简单:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
function callEndpoint() {
    $.getJSON('/endpoint.jsp', function(data) {
        $('#output').append(data.rows[0].user_id);
    });
}
callEndpoint();
</script>
<body>
<div id="output"></div>
</body>
</html>

【讨论】:

  • 这看起来很棒但是由于某种原因它一直在 callEndpoint 函数中冻结。我一直在 phpstorm 中运行此代码并尝试了许多事情,例如访问本地 .jsp 文件而不是一个外部的.. 我什至尝试在我的计算机上本地运行一个 w3shools 示例,它似乎在 $.getJSON 调用之后冻结了。意思是如果我在它之后发出一条警报消息,它永远不会到达它。任何想法可能导致这个问题?
  • 它可能会默默地失败。我建议使用 Firebug 来单步调试代码。 getJSON 函数还允许您访问有关 AJAX 请求成功或失败的更多详细信息。看api.jquery.com/jQuery.getJSON
  • 由于某种原因,当通过 phpStorm 运行 chrome 浏览器时,它对我不起作用。具有讽刺意味的是,我安装了 FireFox 以便我可以运行 Firebug,我正计划在它工作时进行一些调试。所以显然 PHPStorm-Chrome->$.getJson (mac) 组合对我不起作用。但 firefox 成功了。
【解决方案3】:

希望这段代码可以帮助到你,

var data = '{"successful":"true","rows":[{"zip":"56431","user_id":"35","name":"test"}]}' var jsonObj = JSON.parse(data); var userID = jsonObj.rows[0].user_id; var name = jsonObj.rows[0].name

【讨论】:

    【解决方案4】:
    var obj = JSON.parse(string);//Were string is your data string
    

    更多详情请查看this答案。

    我不知道你所说的端点是什么意思,但我希望你没有从 URL 中解析数据。

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 2022-01-21
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多