如何将 JavaScript 变量传递给 jQuery ajax 请求

Posted

技术标签:

【中文标题】如何将 JavaScript 变量传递给 jQuery ajax 请求【英文标题】:How to pass JavaScript variable to jQuery ajax request 【发布时间】:2015-08-24 14:25:57 【问题描述】:

我正在尝试将变量传递给 jquery ajax 请求:

$(document).ready(function() 
            // get page number
            var page = parseInt(getUrlParameter('page'));
            if (page < 1) page = 1;
            var page_next = page + 1;

          $.ajax(
                type: "GET",
                data:  
                    page: page,

                ,  
                dataType: 'json', 
           ...

不幸的是,变量“page”似乎不存在于 ajax 请求中。做一个 cosole.log(page); inside 揭示了“NaN”作为一个值。

问题好像是

if (page < 1) page = 1;

如果通过 get 检索到的这个值不存在,那么页面将为 NoN。

如何确保页面始终定义为最小 1?

【问题讨论】:

该方法是绝对正确的,错误可能在函数getUrlParameter('page') 中,它没有返回有效的响应(或者不是数字或任何可以转换为此类的东西)。你能告诉我们这个功能吗? 从您目前共享的代码来看,该方法的唯一问题是you don't have a radix on parseInt,但这不会导致此问题。正如 briosheje 所说,getUrlParameter 返回的任何东西都不是可以转换为数字的东西,因此:NaN:不是数字 问题似乎出在上面的人指出的 getURLParameter 函数上。尝试使用 var page = 1;并查看变量是否包含值 1。 刚刚缩小了错误范围。问题在于: if (page @merlin 请检查我的回答,如果您收到 Nan,我建议进行验证,以便将页面默认为 1。 【参考方案1】:

您的 getUrlParameter 正在返回无法转换为数字 NaN = Not a Number 的内容,如果您共享该功能,也许我们可以进一步调试您问题的根本原因,同时,我建议进行以下验证:

var page = parseInt(getUrlParameter('page'));
if (page < 1 || isNaN(page)) page = 1;
var page_next = page + 1;

这样,如果您的页面不是数字,则默认为第 1 页。 希望这可以解决问题并帮助您。

【讨论】:

那很好,但我宁愿说他应该修复getUrlParameter而不是它的结果。我的意思是,结果应该已经是一个数字,所以他应该在 function 中而不是在它之后断言,特别是从我们不知道他如何/从哪里获取这些数据的那一刻起对吧? 这就是我编辑问题的原因。如果他不共享函数就无法找到根本原因,所以我只是提出了一个建议,以使代码更健壮。如果用户在 url 中键入除数字以外的任何内容,应用程序加载页面 1 而不是崩溃或显示错误会很好。 这导致了正确的方向。如果我将 parseInt 留在里面,则可以使用。如果我删除它,页面+1 会显示 11 而不是 2。 您应该离开 parseInt 以使其更健壮。我写的条件是安全检查,如果用户在 url 中键入除数字以外的任何内容,则默认页面为 1。【参考方案2】:

如果您的问题在 if 语句中,我能想到的最快解决方案(尽管我不赞成)是这个:

替换:

var page = parseInt(getUrlParameter('page'));

与:

var page = +getUrlParameter("page") || 1;

如果页面为假(NaN 为假),则将其设置为 1,否则将其设置为结果。

小提琴示例:

function getUrlParameter ( param ) 
    return param === "page" ? 5 : false;


var page = +getUrlParameter("hello") || 1;
alert(page);

page = +getUrlParameter("page") || 1;
alert(page);

http://jsfiddle.net/51tvdsve/

在任何情况下,您都应该尝试修复您的 getUrlParameter 函数,而不是尝试避免其输出,但这只是我的意见。

【讨论】:

以上是关于如何将 JavaScript 变量传递给 jQuery ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Django 变量传递给 Javascript

如何将变量(laravel)传递给javascript?

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数

如何将javascript变量传递给django模板标签

如何将 JavaScript 变量传递给 jQuery ajax 请求

如何将javascript变量传递给数据库