Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除javascript中$.ajax POST的空值_Javascript_Jquery - Fatal编程技术网

删除javascript中$.ajax POST的空值

删除javascript中$.ajax POST的空值,javascript,jquery,Javascript,Jquery,我有 当我制作ajax get时: var pageData = { query: null, pageNumber: 0, pageSize: 30}; 请求显示在firebug:http://localhost:31198/Ajax/GetSuggestions?query=null&pageNumber=1&pageSize=30 在服务器端(ASP.NETMVC3),我收到了字符串中的query=null,而不是null数据(我需要的)。 如何在不使用javascript的delete

我有

当我制作ajax get时:

var pageData = {
query: null,
pageNumber: 0,
pageSize: 30};
请求显示在firebug:
http://localhost:31198/Ajax/GetSuggestions?query=null&pageNumber=1&pageSize=30

在服务器端(ASP.NETMVC3),我收到了字符串中的query=null,而不是null数据(我需要的)。
如何在不使用javascript的delete方法删除空值的情况下修复它?

有多种方法可以“在线”发送数据。向服务器发送表单数据的标准方法是url编码。第二种方法是发送JSON对象。(传输细节是JSON将采用url编码。但这只是传输细节。)第三种方法是使用XML

正如@jfriend00在他的回答中所显示的,有多种方法可以通过url编码发送“null”值。您应该使用服务器端堆栈最支持的一个

Re:为什么字符串“null”发生的事情是,Javascript值null需要转换为一个可以通过HTTP(“无线”)发送的值。默认方法是使用字符串null。问题是url编码方案仅以字符串形式发送内容。因此,它没有自动发送值null vs字符串null的方法。通常的解决方法是空字符串“”

但这也会在服务器端引发问题,因为在大多数计算机语言中,字符串“”不等于null值。因此,您需要进行适当的比较或转换。例如,您的服务器软件中是否存在“==false”

使用JSON进行数据编码是另一种技术。

JSON直接支持空值。它应该以
null
的形式传输。请参阅(不太明显,在页面中搜索null)和


在JSON中接收空数据的方式是空字
null
。如果您使用的是JSON,请注意,您没有收到字符串null,而是收到JSON关键字null。您的JSON接收器/解码器应该知道其中的区别。如果没有,那么它是错误的。

如果您希望您的URL如下所示:

$.ajax({
    type: 'GET',
    url: '/Ajax/GetSuggestions',
    data: pageData,
    success: function (response) {}
http://localhost:31198/Ajax/GetSuggestions?query=&pageNumber=1&pageSize=30 
然后,您必须将查询属性设置为
(空字符串)



如果您希望您的URL如下所示:

$.ajax({
    type: 'GET',
    url: '/Ajax/GetSuggestions',
    data: pageData,
    success: function (response) {}
http://localhost:31198/Ajax/GetSuggestions?query=&pageNumber=1&pageSize=30 

然后,您必须删除才能从pageData对象中删除
query
属性,方法是不首先将其放在那里,或者使用
delete pageData.query
来删除它。

在jQuery中构建请求字符串时,它会使用它能找到的
数据
对象上的每个属性

要删除某个属性,只需删除该属性:

http://localhost:31198/Ajax/GetSuggestions?&pageNumber=1&pageSize=30 

您在服务器端使用什么技术(例如PHP?ASP.NET MVC?)?为什么不使用
delete
删除空值?这个答案完全错误-他没有使用JSON!参数是URL编码的,而不是JSON编码的。哎呀,我读q的速度非常快。我现在已经更新,以更好地涵盖选项和潜在问题。