我有一些存储在变量中的原始JSON,只想将其发布到API

时间:2018-03-16 23:03:26

标签: javascript json

我一直在遍历Stackoverflow和网络上的其他任何地方,试图找到我的问题的解决方案.. 我正在使用Javascript并尝试将一小部分JSON发布到我知道正在运行的API中的端点(我在Postman中手动完成了GET和POST)

这是我的问题.. 我想在我的程序中真的不想做“GET”我只想引用文件,甚至只是将它存储在一个小变量中。

例如,我的代码中有:

var OauthUpload = {
"objects": [
    {
        "name": "api",
        "serviceID": 16,
        "properties": {}
    }
],
"version": "integration",
"environment": "redshift"
} 

然后我试图在JS函数中引用它:

function ApiPostOauth (port) {


$.post(OauthUpload, "http://docker.dc.test.com:" + getActualPort(port) + "/rest/v1/oauth/import", runner);

}

但我没有快乐!我看到了一些不同的问题,但似乎没有一个适合我。

基本上我想要一种方法:

引用我自己的JSON作为变量,然后插入,这样我的函数“ApiPostOauth”在它运行之前插入了吗?

谢谢你们

史蒂夫

1 个答案:

答案 0 :(得分:0)

我已经汇总了一个供你使用的例子。执行此代码时,服务器将返回发送的相同对象。因此,' OauthUpload`对象作为请求主体发送,服务器返回完全相同的对象。注意:如果在运行示例时未在输出面板中看到输出,则需要重新启动服务器(发表评论)。这是为了证明:

[编辑] - 在重新阅读您的问题后,您似乎想将“OauthUpload”对象传递给该函数。我已经更新了这个例子。

您调用jQuery post()方法时出错。如注释中所示,前两个参数在调用post()时相反。

由于你没有接受,我决定使用你的代码提供一个例子。由于我没有你的服务器,我为这个例子站了一台服务器。因此URL和端口将不同,但AJAX调用将是相同的。

请密切关注OauthUpload对象。请注意,属性名称不再被"包围。我删除了这些引号,因为它们似乎让您对JavaScript对象和JSON字符串感到困惑(无论您在Web上读到什么,都没有JSON对象 - JSON是一种字符串格式。)

接下来,查看我的示例中对$.post()的调用与您的代码之间的差异。您将在该调用中看到URL首先出现。



let url = "//SimpleCORSEnabledServer--randycasburn.repl.co/rest/v1/oauth/import";
let OauthUpload = {
  objects: [{
    name: "api",
    serviceID: 16,
    properties: {}
  }],
  version: "integration",
  environment: "redshift"
}

ApiPostOauth(OauthUpload);

function ApiPostOauth(data) {
  $.post(url, data, runner)
}

function runner(data) {
  document.querySelector('pre').textContent = JSON.stringify(data, null, 2);
}

<pre></pre>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;