Javascript 发送请求时是否可以将URL编码为null?

Javascript 发送请求时是否可以将URL编码为null?,javascript,php,url-encoding,Javascript,Php,Url Encoding,我正试图发送一个来自包含null值的对象的请求: ajax_post("path", {name: "Name", status: null}, callback); 我有自己的URL编码对象的方法null是一种javascript类型对象,因此它在这里结束: for(var i in data) { ... if(typeof data[i]=="object") { if(data[i]==null) { //HOW TO ENCODE TH

我正试图发送一个来自包含
null
值的对象的请求:

ajax_post("path", {name: "Name", status: null}, callback);
我有自己的URL编码对象的方法
null
是一种javascript类型
对象
,因此它在这里结束:

  for(var i in data) {
    ...
    if(typeof data[i]=="object") {
      if(data[i]==null) {
        //HOW TO ENCODE THE NULL VALUE?
      }
      else 
      ...
    }
    else 
    ...
  }
服务器端生成的
$\u POST
应包含以下内容:

array(
    name => "Name",
    status => NULL
)
这是可能的,还是必须在服务器端手动将
“NULL”
转换为
NULL

 for(var i in data) {
    ...
    if(typeof data[i]=="object") {
      if((data[i]==NULL) || (empty(data[i]))) {
        //HOW TO ENCODE THE NULL VALUE?
    // echo base64_encode(data[i]);
    // echo base64_​decode(data[i]);
     echo 'NULL';
      }
      else 
      ...
    }
    else 
    ...
  }
确保所有或NULL都是大写。否则,它们将不是有效的空变量

*未测试*

可用于区分空v。非空

因此,如果变量为
null
,则发送“0”;如果变量为非null,则发送“1”。然后,当您收到请求时:

  • 验证参数是否已设置且不是空字符串
  • 验证第一个字符是否在允许的值集(“0”或“1”)中,以及
  • 从字符串中去掉第一个字符并打开该字符,相应地解释字符串的其余部分

您可以简单地发送要为null的参数。
在后端,您可能有一些子句,用于计算参数是否存在。
如果该参数不存在,则为空

例如:

for(数据中的变量i){
...
if(数据类型[i]=“对象”){
if(数据[i]==null){
//不发送参数,以便后端将其计算为null
//未设置(数据[i]);
}否则
...
}否则{
...
}
}

那么,当在查询字符串上传递时,是否要保留数据类型
null
?因此,当PHP接收到它时,数据类型仍然是
null
?正如您所说的那样。基本上,问题在于
null
是否在URL规范中,或者我是否必须为其创建自己的协议/语法。当您收到
$\u POST
vars时,通常要做的第一件事就是使用
isset()
。我会省略
null
值并假设
!isset==null
。比如:
if(!isset($\u POST['status']){$status=null;}
我的例子中的问题是,我使用
null
字段实际将某个值设置为null。因此,最直接的方法是保留该值。此外,我使用该键来检测我正在处理的请求。否则,您是对的。@TomášZato:也许您可以使用空字符串而不是
NULL
您未测试的示例是用哪种语言编写的?它应该做什么?问题的目的是发送一些不需要在服务器上进行额外处理的内容,以及一些明确的内容。@TomášZato嗯,上面定义的语法是明确的。但根据定义,查询字符串参数只是字符串。如果他愿意,他可以编写一个函数为他进行词法分析,但是
null
是一种语言结构,而不是字符串,因此必须进行后处理。当然,这里有空字节
%00
,我有点好奇PHP是如何处理的,但我愿意打赌,简单地发送
%00
意味着服务器端代码只看到一个空字符串。要求不是后期处理。如果这是不可能的,那么“否”是一个答案,尽管这个问题的未来访问者欢迎其他选择。url参数是字符串这一事实并不意味着不能在那里实现语言构造——毕竟所有PHP数组都可以通过查询字符串发送。这完全取决于如何在PHP服务器上实现查询字符串,这就是这个问题。