我可以在发送请求时urlencode null吗?

时间:2014-10-02 10:53:48

标签: javascript php url-encoding

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

ajax_post("path", {name: "Name", status: null}, callback);

我有自己的方法,URL对对象进行编码。 null是javascript类型object,因此最终会在此处显示:

  for(var i in data) {
    ...
    if(typeof data[i]=="object") {
      if(data[i]==null) {
        //HOW TO ENCODE THE NULL VALUE?
      }
      else 
      ...
    }
    else 
    ...
  }

服务器端生成的$_POST应包含以下内容:

array(
    name => "Name",
    status => NULL
)

这是可能的还是我必须在服务器端手动将"NULL"转换为NULL

3 个答案:

答案 0 :(得分:0)

您可以使用prefixes区分null v。非null。

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

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

答案 1 :(得分:0)

您可以发送要为空的参数。
在后端,您可能有一些子句可以评估Parameter是否存在。
如果参数不存在,则为空

例如:

for(var i in data) {
  ...
  if(typeof data[i]=="object") {
    if(data[i]==null) {
      //Dont send parameter so backend evaluates this to null
      //unset(data[i]);
    } else 
    ...
  } else {
    ...
  }
}

答案 2 :(得分:-2)

 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都是大写的。否则它们将不是有效的NULL变量。

*未经测试*