我已经看到了一些关于将HTML 从 PHP 发送到 HTML页面的问题,但这个问题实际上恰恰相反(我可以从PHP获取HTML)用json_encode)。
一小段代码解释了大部分代码:
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);
}
});
}
仅供参考:log只执行console.log(如果存在)。
所以基本上这里发生的是 pagecontents 变量包含HTML数据,所有这些都在<body>
标记内(如果重要,则表示没有标题信息)。但是,当我实际调用此函数时,log()函数工作正常......但getJSON()永远不会完成(实际上,据我所知,它从未进入我的PHP服务器)。
如果我用标准字符串替换 pagecontents ,它可以正常工作。
在发送之前,我是否需要从javascript中执行类似于json_encode的操作?什么东西会把所有东西都转换成html实体?
- 编辑 -
所以我刚刚在Firebug中发现了“Net”标签,它向我展示了一些我没有意识到的东西:它显示了所有正确数据的GET请求......但服务器返回404.我不知道怎么会发生这种情况,因为PHP文件与我从5秒钟前获取的东西相同。
此外,即使我尝试使用.post(...,'json')更改.getJSON(),Firebug仍然显示GET请求,而不是POST,所以现在让我更加困惑。< / p>
答案 0 :(得分:0)
您可能还需要使用encodeURIComponent
,因为所有这些数据都会在URL字符串中出现(长度也可能是个问题)。
答案 1 :(得分: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'
);