2014-10-02 32 views
4

我試圖發送從包含null值的對象起源的請求:我可以在發送請求時urlencode爲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在服務器端?

+0

讓你想查詢字符串中國率先時保留數據類型'null'字符串的其餘部分?所以當PHP收到它時,數據類型仍然是'null'? – Ghost 2014-10-02 10:56:35

+1

正如你所說。基本上這是一個問題,null是否在URL規範中,或者如果我必須爲它創建我自己的協議/語法。 – 2014-10-02 10:58:47

+1

當你收到'$ _POST'變量時,你通常會做的第一件事就是使用'isset()'。我會忽略'null'值並假定'!isset == null'。像:'if(!isset($ _ POST ['status'])){$ status = null; }' – DanFromGermany 2014-10-02 10:58:51

回答

-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都是大寫as-well。否則它們將不是有效的NULL變量。

*未測試*

+1

用哪種語言編寫了未經測試的示例?它應該做什麼? – 2014-10-05 12:30:33

0

您可以使用prefixes區分空訴非空。

所以,如果變量是null,發送「0」,如果變量非空,則發送「1」。然後,當收到一個請求:

  • 驗證參數被設定,並沒有一個空字符串,
  • 驗證所述第一字符是組所允許值(「0」或「1」),和
  • 從字符串中去除第一個字符並打開該字符,解釋相應
+0

這個問題的目的是發送一些不需要額外處理服務器和一些明確的東西。 – 2016-03-30 15:32:32

+0

@TomášZato那麼,上面定義的語法是明確的。但根據定義,查詢字符串參數只是字符串。如果他想要,他可以寫一個函數來爲他做文章,但是'null'是一個語言結構,而不是一個字符串,所以*必須*後處理。當然,空字節爲'%00',我對PHP如何處理它有點好奇,但我願意打賭,只需發送'%00'就意味着服務器端代碼只看到一個空字符串。 – 2016-03-30 15:58:57

+0

該要求不是後處理。如果這是不可能的,那麼* no *就是答案,儘管對於這個問題的未來訪問者來說歡迎替代方案。 url參數是字符串的事實並不意味着一個語言結構不能在那裏實現 - 畢竟PHP數組可以通過查詢字符串發送。它完全取決於如何在PHP服務器上實現查詢字符串,這就是這個問題的關鍵。 – 2016-03-30 18:53:39

相關問題