【问题标题】:Converting GET into POST in JS在 JS 中将 GET 转换为 POST
【发布时间】:2012-05-13 19:11:07
【问题描述】:

使用数据表。尝试使用 POST 获得工作功能(目前仅适用于 GET)。

基于on this discussion 我修改了this function 并得到了类似下面的内容。现在收到错误消息:

json.aaData 在第 99 行未定义

Whole code is here

        jQuery.post( sSource, aoData, function (data) { 
            /* Callback processing */
            oCache.lastJson = jQuery.extend(true, {}, data);

            if ( oCache.iCacheLower != oCache.iDisplayStart )
            {
                data.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
            }
            data.aaData.splice( oCache.iDisplayLength, data.aaData.length );

            fnCallback(data)
        },"json" );
    }
    else
    {
        json = jQuery.extend(true, {}, oCache.lastJson);
        json.sEcho = sEcho; /* Update the echo for each response */
        json.aaData.splice( 0, iRequestStart-oCache.iCacheLower ); // <- this line
        json.aaData.splice( iRequestLength, json.aaData.length );
        fnCallback(json);
        return;
    }
}

我错过了什么?有什么建议吗?

【问题讨论】:

  • 尝试提供更多细节,或将问题本地化,以便更多人尝试回答。
  • @LukaRamishvili 我真的不知道,有什么问题。我提供了我知道的信息
  • @LukaRamishvili 但是,我建议,这与变量名有关。
  • 你知道你只需要写一次长格式的jQuery吗?通过将代码包装在(function($) { .... })(jQuery); 中,无论noConflict 是否被使用,您都可以使用$
  • @ThiefMaster 这不是我的代码。请查看我提供的链接

标签: javascript jquery ajax json datatables


【解决方案1】:

它是jQuery.post( sSource, aoData, function (data) {。您有aoData,但在您引用aaData 的代码中。可能是笔误。

【讨论】:

  • 现在,json.aoData 在第 99 行未定义
  • 伙计们,我发现错误:PHP 返回值延迟 1-2 秒 jQuery.post 不等待响应,我想。您认为如何解决这个问题?
  • $.ajax({...type: "POST", response:function(data){/*do something with data*/}...});
  • 我已经解决了这个问题。你能看看这个问题吗? stackoverflow.com/questions/10612904/…
【解决方案2】:

因此,您提供的完整代码示例不可能是完整代码,因为它只有 75 行长,并且您收到一条错误消息,提示您在第 99 行有一个未定义的属性。

但是,您确实说过这一行:

json.aaData.splice( 0, iRequestStart-oCache.iCacheLower );

给你未定义的错误。发生的事情是您试图访问由于某种原因在您的 json 对象上不存在的属性 aaData 的拼接函数。

因此,如果您打开 JavaScript 控制台并输入 json.aaData,您将看到它返回 undefined。所以任何应该设置 json 变量的 aaData 属性的东西都没有这样做。我希望这可以帮助您找出错误。

【讨论】:

  • 好的,根据您的屏幕投射,您从 question.php 获得的 JSON 对象似乎返回了一个名为 aaData 的属性。我建议单击控制台右侧的“脚本”选项卡。在它显示“内联”的地方单击它并查找包含您的脚本的文件。接下来向下滚动到正在访问 aaData 属性的行号,然后单击绿色行号。您应该会看到数字旁边出现一个小红点。那就是设置断点。现在在右侧查找您的 json 变量,看看是否设置了 aaData。
  • 未定义。请查看脚本的原始版本 datatables.net/release-datatables/examples/server_side/… 第 80-91 行,我更改为 Post。我认为因为这个原因出了点问题
  • 伙计们,我发现错误:PHP 返回值延迟 1-2 秒 jQuery.post 不等待响应,我想。您认为如何解决这个问题?
  • 嘿,所以你可以设置一个间隔函数来一直请求它,直到它得到它或超时:var secondsCounted = 0; var interval = setInterval(function(){ if ( json.aaData ) { //做你需要做的事情并清除间隔 //...做一些事情 clearInterval(interval); } else { if (secondsCounted == 10) { console.log('json.aaData not found due to timeout'); clearInterval(interval); return; } secondsCounted++; } },1000);
猜你喜欢
  • 1970-01-01
  • 2012-04-02
  • 2020-06-21
  • 2019-04-19
  • 2018-05-20
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多