2011-05-01 173 views
0

我已經看到了有關從發送HTML數據PHP 一個HTML頁面的一些問題,但這個問題實際上是相反不起作用(我可以從PHP HTML罰款與json_encode)。發送HTML通過的getJSON javascript變量

的一小段代碼,說明大部分:

savePage = function() { 
var pagecontents = $("#editcontents").val(); 
log("Attempting to save page..."); 
$.getJSON(docTools+"?jsoncallback=?",{action:'update', loginCookie:loginCookie, page:thisFile, newdata:pagecontents}, function(data) { 
    if(data.response[0].answer === 'true') { 
    log('Page'+thisFile+' was saved correctly: '+data.response[0].details); 
    $("#editcontents, #saveedit, #canceledit").remove(); 
    $("#bodycontents").html(pagecontents); 
    } else { 
    log('Failed to save page. Error (' + data.response[0].errorcode + ') : ' + data.response[0].errormessage); 
    } 
}); 
} 

FYI:登錄少了點,如果它存在CONSOLE.LOG。

所以基本上這裏所發生的是,pagecontents變量包含HTML數據,所有這些都在<body>標籤(意思是沒有頭信息,如果該事項)。然而,當我真正調用這個函數時,log()函數可以正常工作......但是getJSON()永遠不會完成(實際上,據我所知它永遠不會傳遞給我的PHP服務器)。

如果我用一個標準字符串替換頁面內容,它工作正常。

在發送之前,我需要做類似於JavaScript的json_encode嗎?什麼東西可以將所有內容轉換爲html實體?

- 編輯 -

所以我剛剛發現在Firebug的「網絡」選項卡,它的顯示我的東西我沒有意識到:它顯示了所有正確的數據的GET請求......但服務器返回一個404。我不知道這是怎麼發生的,因爲PHP文件與我之前5秒鐘抓取的東西是一樣的。即使我試圖用.post(...,'json')更改.getJSON(),Firebug仍然顯示GET請求,而不是POST,所以現在讓我更加困惑。

+2

多久實際字符串? JSONP是一個GET請求,所以你會遇到一些限制。 – 2011-05-01 05:36:10

+0

啊,我明白你的意思了,你可能會做點什麼。在這個例子中,代碼長達3632個字符,這是相當長的(並且我不得不發送最長的)。由於getJSON不會發布,我可能需要深入挖掘... – 2011-05-01 05:41:49

回答

0

您可能還需要使用encodeURIComponent,因爲所有數據都將在URL字符串中發送(長度也可能是個問題)。

+0

這是由jQuery內部處理的,當您將數據參數作爲對象傳遞時:) – 2011-05-01 06:02:54

+0

啊。很高興知道。謝謝! – 2011-05-01 06:03:35

0

使用

$.post {(docTools+"?jsoncallback=?",{action:'update', loginCookie:loginCookie, page:thisFile, newdata:pagecontents}, function(data) { 
    if(data.response[0].answer === 'true') { 
    log('Page'+thisFile+' was saved correctly: '+data.response[0].details); 
    $("#editcontents, #saveedit, #canceledit").remove(); 
    $("#bodycontents").html(pagecontents); 
    } else { 
    log('Failed to save page. Error (' + data.response[0].errorcode + ') : ' + data.response[0].errormessage); 
    } 
}, 
    'json' 
); 
+0

你不能發佈到另一個域名,看到迴應......它被相同的出處政策禁止,爲什麼JSONP存在:) – 2011-05-01 06:03:37

+0

@Nick我沒有意識到這是一個跨域AJAX問題。 – Aleadam 2011-05-01 06:15:34

+0

尋找在URL中指定的回調,這通常是故事的標誌:) – 2011-05-01 06:16:45