【问题标题】:How to access the response i get from POSTing with $.ajax如何访问我通过 $.ajax 发布的响应
【发布时间】:2013-11-14 21:02:00
【问题描述】:

我不是专业的程序员,想从网上找到这个,如果我的问题看起来很愚蠢,请提前道歉,但我过去 2 天一直在研究这个,但无济于事。

这是我的代码:

function view(data)
{
    alert (data);
}

function test()
{
    var url = 'someurl';

    $.ajax({
        type: 'POST',
        url: url,
        async: false,
        contentType: "application/json",
        dataType: 'jsonp',
        data: "Basic=YWRtaW46cHNhZG0xbg==",
        headers: {
            "Basic": 'YWRtaW46cHNhZG0xbg=='
        },
        success: view(data)
    })
}

但是每当我运行它时,我都会收到一条错误消息:“数据未定义”。 我如何访问请求得到的实际响应? 我相信,如果你们能给我一个提醒响应的代码(但使用我的代码),我可以从那里获取它。

谢谢!!!


各位,首先非常感谢您快速详细的回复!

我尝试了这两种方法,但我没有收到“未定义数据”的错误,我想我不明白的是,我在调用什么函数?当我只想将“数据”放入变量中时,怎么会需要一个代理函数?

话虽如此,我遇到了一个新问题 - 由于某种原因,FF/Chrome 忽略了我设置的属性,并在没有标头的情况下发送它,并且作为“导致错误的 GET:” p>

Request .com:xxxx?callback=jQuery191023387945420108736_1384464320088&        Basic=YWRtaW46cHNhZG0xbg==&_=1384464320089
Request Method:GET
Status Code:401 Unauthorized
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:JSESSIONID=EC56CA6ADB540E1B6785B318DD0886CD
Host:IP:8083
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/30.0.1599.101 Safari/537.36
Query String Parametersview sourceview encoded
callback:jQuery191023387945420108736_1384464320088
Basic:YWRtaW46cHNhZG0xbg
_:1384464320089
Response Headersview source
Content-Length:77
Date:Wed, 13 Nov 2013 11:15:40 GMT
Secsph-Request-Id:1164775931060804669
Server:NA"

主要请求还伴随着次要请求,我不确定是什么调用了它,或者它是否与问题有关:

Request :nikkomsgchannel        /e?00160023002b00550046004b00660050005e005800280055005c007a002200590050004d004a005600520004002000530055003600210010005d005900540056000b006a003300500054002c0030005400470056001f0047004f00490023000f005b003000300042005c0056001f00550059004b002b000f0057002c002f005d005c00560050005f005a
Request Headersview source
Cache-Control:no-cache
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/30.0.1599.101 Safari/537.36
Query String Parametersview sourcevie encoded
00160023002b00550046004b00660050005e005800280055005c007a002200590050004d004a005600520004002000530055003600210010005d0

有什么想法吗?

【问题讨论】:

    标签: jquery ajax post custom-headers


    【解决方案1】:

    试试:

    function test() {
        var url = 'someurl';
    
        $.ajax({
            type: 'POST',
            url: url,
            async: false,
            contentType: "application/json",
            dataType: 'jsonp',
            data: "Basic=YWRtaW46cHNhZG0xbg==",
            headers: {
                Basic: 'YWRtaW46cHNhZG0xbg=='
            },
            success: function (data) {
                alert(JSON.stringify(data));
            }
        });
    }
    

    这似乎是你想要做的(警告 JSON 字符串)

    【讨论】:

      【解决方案2】:

      试试这个..

      function test() {
                  var url = 'someurl';
                  $.ajax({
                      type: 'POST',
                      url: url,
                      async: false,
                      contentType: "application/json",
                      dataType: 'jsonp',
                      data: "Basic=YWRtaW46cHNhZG0xbg==",
                      headers: {
                          "Basic": 'YWRtaW46cHNhZG0xbg=='
                      },
                      success: function(data) {
                           console.log(data);
                           // /\ this will show on console the returned data.
                           //the variable 'data' actually contains the returned data.
                           // here you can do whatever you want with the returned data
                           //if you want to alert the response:
                           alert(data);
                      }
                 });
              }
      

      【讨论】:

        【解决方案3】:

        当您执行success: view(data) 时立即执行view(data)(尝试将当前不存在的data 传递给view 函数),并尝试将该函数的返回值设置为@987654325 @回调。

        您需要做的只是简单地将函数引用作为回调传递,所以:

        success: view
        

        然后,当 AJAX 请求返回成功响应时,将调用 view 函数,并将响应作为参数传递给 data 参数。

        【讨论】:

        • 知道了!!非常感谢大家的帮助!我已经更新了原始问题,关于为什么忽略参数的任何想法?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 2016-10-08
        • 2013-01-17
        相关资源
        最近更新 更多