2009-10-07 63 views
1
$.fn.fieldValues = function(successful) 
{ 
    var values = {}; 
    this.each(function() 
    { 
     if(strstr(this.name, '[]', true)) 
     { 
      var tmp = this.name.replace(/\[\]/, ''); 
      if(typeof values[tmp] == 'undefined') values[tmp] = {}; 
      var x = 0; 
      while(typeof values[tmp][x] != 'undefined') x++; 
      values[tmp][x] = $(this).val(); 
     } 
     else values[this.name] = $(this).val(); 
    }); 
    return values; 
} 

問題是我得到的PHP端此陣:的JavaScript/JQuery的數組/對象問題

array(['tagCloud'] => '[object Object]', ['status'] => 'Active'.....) 

爲什麼tagCloud一個對象,我怎麼可以發佈一個整體關聯數組到PHP?

回答

1

聽起來像是你需要SerializeArray代替,這就像序列化反而會使名稱/值對象的數組。

然後你應該把它變成一個JSON字符串並傳遞給你的PHP進程。然後,PHP可以將它反序列化爲一個名稱/值對象數組,然後您可以使用所需的數據。

//build json object 
var dataArray = $.makeArray($("form").serializeArray()); 

然後通過作爲後:

// make ajax call to perform rounding 
$.ajax({ 
    url: "/Rounding.aspx/Round/12", 
    type: 'POST', 
    dataType: 'html', 
    data: $.toJSON(dataArray), <-- call to jQuery plug in 
    contentType: 'application/json; charset=utf-8', 
    success: doSubmitSuccess 
}); 

這裏是一個link要我用序列化數據

1

將它編碼爲json對象,然後解碼它在PHP(json_decode)解決?

+0

是的,我認爲它會在JSON庫,但JQuery的母語不是招」沒有json原生,並且我使用的每個插件都很糟糕,任何人都知道這個插件可以工作嗎? – dfilkovi 2009-10-07 14:23:28

+0

你的意思是PHP沒有JSON原生? – 2009-10-07 14:27:15

+0

不,但我找到了一個解決方案,問題是,當在jQuery中使用toJson時,我得到了stdClass的對象,我需要將它轉換爲PHP端的數組,並且它會好的。 – dfilkovi 2009-10-07 14:36:00

0

看起來像你正在重新發明jQuery.fn.serialize。 jQuery的處理與"[]"輸入中已經名稱:

<form> 
    <input type="hidden" name="foo[]" value="1" /> 
    <input type="hidden" name="foo[]" value="2" /> 
    <input type="hidden" name="foo[]" value="3" /> 
</form> 

<script> 
alert(unescape($('form').serialize())) // "foo[]=1&foo[]=2&foo[]=3" 
</script> 

PHP將解析到一個數組OOTB。

+0

是的,但序列化返回字符串,我需要數組,因爲我會處理它不同於我的自定義AJAX函數 – dfilkovi 2009-10-07 14:35:00

+0

@dfilkovi:定義「處理它不同」請。 – 2009-10-07 14:40:06

+0

首先我從表單獲取所有數據,然後將其他需要的變量放入該數組中,例如許多php函數調用(update,delete),然後將整個數組傳遞給ajax。通過使用序列化,我需要將所有其他變量添加到該字符串,但是當我不使用serialize()而是簡單的val()並且只想傳遞一個變量時。我需要檢查如果任何傳遞的變量是序列化的字符串,然後用其他變量更新字符串,在我看來,似乎是一種矯枉過正。 – dfilkovi 2009-10-07 14:47:10