2013-05-15 76 views
1

因此,我有一個腳本使用AJAX將json字符串傳遞給php文件。我使用JSON.stringify() javascript數組添加到json字符串。麻煩的是數組中的項目有時包含引號(即在html標籤的屬性的情況下)。這裏是產生這樣的例子JSON字符串:將包含GET變量中的標記的JSON傳遞給php

[["CUGHDAA ID Equity","Cullen Global High Dividend USD","0.5","<a href="\&quot;&quot;#&quot;\&quot;">x</a>"],["XESX GY Equity","DB X Euro Stoxx 50","0.5","<a href="\&quot;&quot;#&quot;\&quot;">x</a>"],["ABEFROA LX Equity","Aberdeen Global Emerging Markets","0.25","<a href="\&quot;&quot;#&quot;\&quot;">x</a>"]] 

JSON.stringify()逃逸和HTML編碼的報價,但是當我通過一個GET變量傳遞的字符串到PHP文件我的PHP文件似乎不能夠接受它:引用似乎只是把所有東西搞砸了。我能做些什麼來確保json字符串到達​​php而不會搞亂GET表單?

編輯:如果我要使用POST,我將如何去通過jQuery Ajax傳遞它?

這是我到目前爲止有:

var form = $(this), 
     formData = '&id=' + id + '&portData=' + JSON.stringify(tbl), 
     formUrl = form.attr('action'), 
     formMethod = form.attr('method'), 
     responseMsg = $('#update-response'); 

     //add status data to form 
     form.data('formstatus','submitting'); 

     //Do the ajax 
     $.ajax({ 
      url: formUrl, 
      type: formMethod, 
      data: formData, etc... 

儘管使用formData變量名我傳遞的數據是不是一個形式,而是一組聚集在提交的JavaScript變量。我如何通過POST而不是GET來通過idJSON.stringify(tbl)

+0

有了這麼多的數據,你真的應該使用POST而不是GET。 – Blazemonger

+0

那麼,你顯示的是不正確地逃脫JSON。這是從哪裏來的?你到底在用PHP接收什麼? – deceze

+0

我顯示的是從'JSON.stringify'返回的內容。這將得到發送變量作爲一個get變量,但顯然搞亂了事情,因爲引號在URL形式時得到未轉義,因爲html編碼的引號被視爲帶有斜槓的引號 – harryg

回答

2

使用encodeURIComponent準備插入URI的字符串。


由於您的編輯發現您使用的是jQuery ajax,因此不要手動構建查詢字符串。將對象傳遞給data

data: { "id": id, "portData": JSON.stringify(tbl) }, 
+0

然後,我將如何在PHP中解碼這一次? – harryg

+0

與任何其他查詢字符串數據相同的方式。 '$ json_text = $ _GET ['portData']' – Quentin

+0

剛剛嘗試過,它似乎工作。非常感謝! – harryg

相關問題