【问题标题】:JSON Api Call with "POST"带有“POST”的 JSON Api 调用
【发布时间】:2015-12-01 23:30:25
【问题描述】:

我尝试使用以下测试代码在我的 Wordpress 系统中注册用户(已安装 JSON Api 用户插件):

<form id="register" name="register" method="post">
<input id="submitLogin" type="submit" value="Abschicken" onclick="register()">
</form>


<script type="text/javascript" charset="utf-8">


function register() {
 $.ajax({
url: 'http://XXX.de/api/user/register/?username=xxx@test.de&email=xxx@test.de&nonce=d60besdfee&display_name=xxx@test.de&user_pass=rtzrtzrtz0&apikey=gfhrtzh465&callback=?',
type: "POST",
dataType: 'json',
success: function(data){

 }
 });
}

</script>

代码有什么问题?

【问题讨论】:

    标签: javascript ajax json wordpress api


    【解决方案1】:

    问题是您调用的端点使用JSONP,而不仅仅是 JSON。 JSONP是一种数据格式(JSON)传输机制(脚本元素)。它本质上只是 GET,而不是 POST,因为在幕后实际上是在页面中添加一个带有 src 属性的脚本元素,这使得浏览器可以获取脚本。

    如果端点支持 Cross-Origin Resource Sharing,您可以使用 POST(您需要删除 URL 的 callback=? 部分)。如果不是,则由于Same Origin Policy,您无法使用 POST 与该端点跨域对话。

    旁注:我看不出您的呼叫有任何理由需要使用 POST,因为您没有发送任何数据(ajax 呼叫的选项中没有 data 属性)。您可能只想删除type: "POST",将dataType: "json" 更改为dataType: "jsonp",然后删除&amp;callback=?(因为当您指定dataType: "jsonp" 时,jQuery 会处理该问题)。

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2013-02-19
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多