2013-07-02 20 views
1

我試圖JSON序列化數組如下:JSON.stringify回來了嗎?

function postToDrupal(contacts, source, owner) { 
    (function ($) { 

    var contact, name, email, entry; 
    var emails = []; 
    var post_object = {};  

    for (var i = 0; i < contacts.length; i++) { 
     contact = contacts[i]; 
     emails[i] = {}; 
     emails[i]['name'] = contact.fullName(); 
     emails[i]['email'] = contact.selectedEmail(); 
     console.log(contacts.length) 
    } 

    post_object['emails']=emails; 
    post_object['source']=source; 
    post_object['owner']=owner; 

    $.post("/cloudsponge-post",JSON.stringify(post_object),function(data) { 

    window.location.href = "/after-import"; 

    }); 
    }(jQuery)); 
} 

的問題是,後回來空。沒有JSON.stringify()我得到所有元素(但有成千上萬的元素,它們可能會遇到一些服務器限制,所以它們需要被序列化)。任何幫助將非常感激。

+1

我不認爲我們可以做任何事情沒有服務器端代碼 – mishik

+0

沒有你試圖記錄'JSON.stringify(post_object)'? –

+0

相關的服務器端代碼是<?php print_r($ _ POST); ?>。這個問題絕對是來自stringify。 – cjm2671

回答

2

的問題是這樣的。當對服務器的請求是JSON類型時,它不是嚴格的POST,所以PHP不會填充$ _POST字段。爲了檢索數據時,它必須直接從請求讀取,換句話說,而不是使用$ _ POST,使用方法:

$data=file_get_contents("php://input"); 
1

您不需要撥打JSON.stringify,$ .post接受對象,請檢查$.post

代碼在一個時間發佈短短電子郵件:

function postToDrupal(contacts, source, owner) { 
    var pending = 0, limit = 10; 
    var post_patch = function(emails) { 
     var post_object = {}; 
     post_object['emails']=emails; 
     post_object['source']=source; 
     post_object['owner']=owner; 
     pending++; 
     $.post("/cloudsponge-post", post_object,function(data) { 
      if(pending-- == 0) { 
       window.location.href = "/after-import"; 
      } 
     }); 
    } 
    (function ($) { 

     var contact, emails = []; 

     for (var i = 0; i < contacts.length; i++) { 
      contact = contacts[i]; 
      emails[i] = {}; 
      emails[i]['name'] = contact.fullName(); 
      emails[i]['email'] = contact.selectedEmail(); 
      console.log(contacts.length) 
      if(limit-- == 0) { 
       limit = 10 
       post_patch(emails); 
       contact = null; emails = {}; 
      } 
     } 

    }(jQuery)); 
} 
+0

由於PHP的新帖子字段限制,我有一個要求在發佈之前以某種方式序列化它 – cjm2671

+1

好吧,無論它在帖子數據長度本身上還是有限制的,所以你可能不得不將它分解爲X量在一次的領域。 – OneOfOne

+0

請注意,可以使用PHP更改後限制。見http://stackoverflow.com/questions/8710185/new-limit-within-php-1000-fields-per-post-does-someone-know-if-the-number-can – Spudley