【问题标题】:JSON call with url as parameter [duplicate]以 url 作为参数的 JSON 调用 [重复]
【发布时间】:2016-09-21 16:14:06
【问题描述】:

只要主页变量中没有//,它就可以正常工作

$.getJSON(url + "/addPerson/'" + name + "'/'" + homepage +"'", function(data){console.log(data);} );

我将如何正确准备一个 url var 以将其作为 JSON 调用传递?

【问题讨论】:

  • 首页变量的可能值是什么??

标签: javascript json


【解决方案1】:

在尝试通过 http 访问 api 时,使用 encodeURI 对 uri 进行编码并为 api 获取正确的值

【讨论】:

  • 你能举个例子吗?
  • $.getJSON(encodeURI(url + "/addPerson/'" + name + "'/'" + homepage +"'"), function(data){console.log(data);} );
  • @user3732793 只有名称和主页应该被编码使用$.getJSON(url + "/addPerson/" + encodeURIComponent(name) + "/" + encodeURIComponent(homepage)), ...
  • 谢谢,但这并没有到达 Person 后面的 api。目前已简化为“../addPersonen/{param1}/{param2}”作为 url
【解决方案2】:

如果homepage 是一个带有http:// 的URL,你需要对其进行编码。

你应该写:

$.getJSON(url + "/addPerson/" + name + "/" + encodeURIComponent(homepage), function(data){console.log(data);} );

如果是这种情况,您不应该在 urls 中传递 urls。使用 POST 有效负载或多格式数据。

此外,如果请求的目的是在数据库中添加记录,请使用 POST 而不是 GET。

$.post(url+'/addPerson', {name: name, homepage: homepage}, function(data){console.log(data);});

【讨论】:

  • 你需要使用encodeURIComponent,encodeURI不要编码斜线encodeURI('http://example.com')返回http://example.com
  • 非常感谢。确实有效。谢谢大家!
  • 实际上只有 getJSON 对我有用
  • @user3732793 好吧,您需要对 API 进行适当的更改,以使 POST 请求正常工作,我强烈建议您这样做。 GET 请求用于获取数据。 POST 请求用于 POSTING 数据。
  • 是的,有道理,我已将 tha api 更改为接受 post 请求。但是,您的第二个代码示例无法使用它,因此使用了 getJSON 示例中的 uri 组合...
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 2019-10-10
  • 2018-01-30
  • 2012-11-12
相关资源
最近更新 更多