如何使用变量发送GraphQL AJAX查询?

我正在尝试使用GraphQL对GitHub进行API调用,我已经能够使用静态graphQL调用成功调用数据,但是我在调​​用中输入变量(var条目)时遇到问题,这样我就可以更改调用了在用户将在Web应用程序中提供的输入上。

我正在使用AJAX来传递授权令牌。 此外,除非查询是JSON字符串化,否则调用不起作用(否则会获得400错误)。

JSON Stringify似乎将变量’superQuery’的名称变为字符串,而不是将’superQuery’的值转换为字符串。

如何使用可根据用户输入更改的变量发送graphQL查询?

PS相对于web开发的noob,为任何超级明显的错误道歉。

这是我到目前为止:

var entry = $('#entry').val() var superQuery = `{ repository(name: entry, owner: "******") { pullRequests(last: 100) { nodes { state headRepository { owner { login } } } } } }` .ajax({ method: "POST", url: "https://api.github.com/graphql", contentType: "application/json", headers: { Authorization: "bearer **********************************" }, data: JSON.stringify({ query: superQuery }) }) 

对于任何有相同问题的人来说,这就是我最终使用它时代码的样子:

  $('button').click(function() { event.preventDefault(); var entry = $('#entry').val() console.log(entry); $.ajax({ method: "POST", url: "https://api.github.com/graphql", contentType: "application/json", headers: { Authorization: "bearer ***********" }, data: JSON.stringify({ query: `query ($entry: String!) {repository(name: $entry, owner: "*******") { pullRequests(last: 100) { nodes { state headRepository { owner { login } } } } } }`, variables: { "entry": $('#entry').val() } }) }) 

如果我理解你的问题,我相信你想要做以下(假设条目是一个字符串):

  var superQuery = `query repository($entry: String) repository(entry: $entry) { pullRequests(last: 100) { nodes { state headRepository { owner { login } } } } }` 

然后为您的数据:

 data: JSON.stringify({ query: superQuery, variables: { entry: entry } })