【问题标题】:How to use ajax post request response data to make another ajax post request?如何使用 ajax 发布请求响应数据进行另一个 ajax 发布请求?
【发布时间】:2016-02-14 03:16:08
【问题描述】:

我需要向一个 api url 发出两个 ajax 发布请求。第一个请求以 json 格式返回一些数据(密码、会话、会话 ID、项目 ID)。

谁能告诉我如何获取密码、会话、sessionId、itemId 值并使用它向同一个 api url 发出另一个 ajax 发布请求?

我当前的代码只获得 api 响应,但是如何在第二个 post 请求中使用密码、会话、sessionId、itemId 的值?

我试图引用 api 数据,例如 data.keys.password、data.keys.session、data.items.seasonId、data.items.itemId,但我得到错误 data.keys 和 data.items 未定义!

谁能告诉我我做错了什么?

(注意:目前我将数据放在第二个发布请求中硬编码用于演示目的)

ajax 发布请求调用:

function callAjax() {


        $.post("https://api-somewebsite.com/process.aspx",
        {
          name: "galaxy",
          itemNum: "123456789"
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
            // now i want to use api response data to make another ajax post call
             $.post("https://api-somewebsite.com/process.aspx",
             {
               password: "2342432423ledf",
               session: "23isaofdfjosidfiedfdd=="
               seasonId: "12345",
              itemId:    "334455"
             },
            function(data,status){
            alert("Data: " + data + "\nStatus: " + status);


             });

        });


};

<br>
<button onclick="callAjax()">callAjax</button> 

我想引用其项目的 api 响应(对于第一个 ajax 发布请求):

{
     "keys": {
         "password": "2342432423ledf",
         "session": "23isaofdfjosidfiedfdd=="
     },
     "items": {
         "seasonID": 12345,
         "itemID": 334455,
}

}

【问题讨论】:

  • 当您将内部 POST 请求中的硬编码数据替换为第一个请求成功函数中的“data”变量时会发生什么?看起来这样可以使第二个请求起作用。
  • 感谢您的回复。我尝试使用 data,keys.password 和 data.keys.session 但都给我未定义!
  • data(来自第一个请求)在您提醒/记录它时是什么样子?
  • 我在第一篇文章中发布了第一个 api 响应,如下所示:{ "keys": { "password": "2342432423ledf", "session": "23isaofdfjosidfiedfdd==" }, "项目”:{“seasonID”:12345,“itemID”:334455,}}
  • 如果是data,那么data.keys.session 不是未定义的。您对$.post 的调用看起来不错。

标签: json ajax post .post


【解决方案1】:

我们在chat 中解决了这个问题。

第一个请求没有将 Content-Type 标头设置为 JSON,因此无法解析响应。将dataType 设置为json$.post 的最后一个参数)正确设置了标头,并且响应将被解析为 JSON。这意味着data 是一个可以访问其属性的对象,而不是一个字符串。

【讨论】:

    【解决方案2】:

    我认为下面的代码可以帮助你

    function callAjax() {
    
    
        $.post("https://api-somewebsite.com/process.aspx",
                {
                    name: "galaxy",
                    itemNum: "123456789"
                },
                function(data,status){
          //return the data as json_encode(yourvalue); from process.aspx 
                    console.log(data);
                    alert("Data: " + data + "\nStatus: " + status);                   
    
                });
    
           };
    

    【讨论】:

    • 这看起来就像您刚刚将 OP 给出的示例响应作为示例并作为后续请求中的数据提供。第二个请求应该使用实际的data 对象来查找它需要在有效负载中提供的内容。目前这个答案给出了一个硬编码的值,而不是第一个请求的实际响应。
    • 这没有意义,你有没有读过这个问题? "如何使用 ajax post 请求响应数据进行另一个 ajax post 请求?"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2015-07-24
    相关资源
    最近更新 更多