Jquery 如何发送带有变量的GraphQL AJAX查询?

Jquery 如何发送带有变量的GraphQL AJAX查询?,jquery,json,graphql,github-api,Jquery,Json,Graphql,Github Api,我正在尝试使用GraphQL对GitHub进行API调用,我已经能够通过静态GraphQL调用成功地调用数据,但是我在调用中放入变量(var条目)时遇到了问题,因此我可以根据用户在web应用程序中提供的输入更改调用 我使用AJAX来传递授权令牌。此外,除非查询是JSON字符串化的,否则调用将不起作用(否则返回400错误) JSON Stringify似乎将变量“superQuery”的名称转换为字符串,而不是将“superQuery”的值转换为字符串 如何发送一个graphQL查询,其中包含一个

我正在尝试使用GraphQL对GitHub进行API调用,我已经能够通过静态GraphQL调用成功地调用数据,但是我在调用中放入变量(var条目)时遇到了问题,因此我可以根据用户在web应用程序中提供的输入更改调用

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

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

如何发送一个graphQL查询,其中包含一个可以根据用户输入进行更改的变量

p.S.相对于网络开发,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
  })
})

如果我正确理解您的问题,我相信您希望执行以下操作(假设条目是字符串):

然后,对于您的数据:

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

对于有相同问题的人,以下是我最终使其工作时代码的样子:

      $('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()
        }
      })
    })

谢谢你,Alex,我尝试了你在这里所做的,以及它的一些变体,但一直收到一个空对象。最后弄明白了,你帮我指出了正确的方向。谢谢下面是我的AJAX调用中的代码:data:JSON.stringify({query:
query($entry:String!){repository(name:$entry,owner:****”){pullRequests(last:100){nodes{state headRepository{owner{login}}}
,变量:{“entry”:$('#entry').val()}很好,很高兴你让它工作了,我从来没有在ajax调用中直接使用过它,但这是有意义的。我可以用它进行变异吗?…应该很简单,用mutation@ByeWebster替换
query。至少它在这里。我尝试了你的代码,但它没有工作……{“readyState”:0,“responseText”:“status”:0,“status text”:“error”}
      $('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()
        }
      })
    })