由于某种原因,我在json字段中遇到了由所见即所得编辑器生成HTML的问题。
我正在使用wordpress和angularJS,我正在尝试制作一个更新某个帖子的表单。
获取数据工作正常,例如,我正在做一些事情,如在服务器上
$data = [
'title'=>$post->post_title,
'description'=>$post->post_content // contains html via a WYSIWYG editor
.... more stuff
]
header('Content-Type: application/json');
echo json_encode($data);
exit;
表单自动填充上面的数据OK。
当我试图通过返回JSON.stringify(data)回服务器更新帖子时,问题正在发生。当我尝试在服务器上json_decode($_POST['data'])时,我得到以下PHP错误,这是由于data.description的HTML内容而发生的。没有data.description,我的代码可以很好地更新post
json_last_error: 4
json_last_error_msg: "Syntax error"
json_decode($_POST['data']) == null
但是在Javascript中,当我做console.log(JSON.stringify(data))并验证JSON数据是好的。
我没有启用魔法配额get_magic_quotes_gpc() => 0。我还尝试了stripslashes($_POST['data']);
这个问题似乎很奇怪,因为数据被php成功转换为json,然后通过javascript解码,但反向操作不工作。
$_POST['data'] value ..在服务器
接收到的JSON字符串不完整{'"deadline'":'"31 Août 2015'",'"country'":'"Canada'",'"city'":'"Montréal-Est'",'"province'":'"Québec'",'"jobillicoCategory'":'"180'",'"recruiterName'":'"HR Team'",'"recruiterEmail'":'"hr@workland.ca'",'"titleEn'":'"'",'"descriptionEn'":'"'",'"requestId'":'"d4618389-6bb5-5e51-8489-d39a4fc09016'",'"ID'":1996,'"title'":'"Buyer - Planner'",'"description'":'"<p><span lang='''"en-US'''">We are currently looking for an experienced, </span><span lang='''"en-US'''">motivated and ready</span><span lang='''"en-US'''"> buyer-planner, </span><span lang='''"en-US'''">t</span><span lang='''"en-US'''">o take on new challenges. The </span><span lang='''"en-US'''">candidate''s</span><span lang='''"en-US'''"> responsibility </span><span lang='''"en-US'''">is </span><span lang='''"en-US'''">to fulfill and coordinate production planning activities within </span><span lang='''"en-US'''">customer </span><span lang='''"en-US'''">constraints and </span><span lang='''"en-US'''">re</span><span lang='''"en-US'''">quirements </span><span lang='''"en-US'''">in order </span><span lang='''"en-US'''">to ensure </span><span lang='''"en-US'''">customer </span><span lang='''"en-US'''">satisfaction and the achievement of business objectives. In addition, </span><span lang='''"en-US'''">they</span><span lang='''"en-US'''"> will </span><span lang='''"en-US'''">carry out</span><span lang='''"en-US'''"> the p</span><span lang='''"en-US'''">urchasing </span><span lang='''"en-US'''">of components necessary for production, </span><span lang='''"en-US'''">while </span><span lang='''"en-US'''">respecting GMP </span><span lang='''"en-US'''">regulations</span><span lang='''"en-US'''"> and purchasing polic</span><span lang='''"en-US'''">ies</span><span lang='''"en-US'''">. </span></p>''r''n<p>
console.log(JSON.stringify(data))已完成的值
{"deadline":"31 Août 2015","country":"Canada","city":"Montréal-Est","province":"Québec","jobillicoCategory":"180","recruiterName":"HR Team","recruiterEmail":"hr@workland.ca","titleEn":"","descriptionEn":"","requestId":"d4618389-6bb5-5e51-8489-d39a4fc09016","ID":1996,"title":"Buyer - Planner","description":"<p><span lang='"en-US'">We are currently looking for an experienced, </span><span lang='"en-US'">motivated and ready</span><span lang='"en-US'"> buyer-planner, </span><span lang='"en-US'">t</span><span lang='"en-US'">o take on new challenges. The </span><span lang='"en-US'">candidate's</span><span lang='"en-US'"> responsibility </span><span lang='"en-US'">is </span><span lang='"en-US'">to fulfill and coordinate production planning activities within </span><span lang='"en-US'">customer </span><span lang='"en-US'">constraints and </span><span lang='"en-US'">re</span><span lang='"en-US'">quirements </span><span lang='"en-US'">in order </span><span lang='"en-US'">to ensure </span><span lang='"en-US'">customer </span><span lang='"en-US'">satisfaction and the achievement of business objectives. In addition, </span><span lang='"en-US'">they</span><span lang='"en-US'"> will </span><span lang='"en-US'">carry out</span><span lang='"en-US'"> the p</span><span lang='"en-US'">urchasing </span><span lang='"en-US'">of components necessary for production, </span><span lang='"en-US'">while </span><span lang='"en-US'">respecting GMP </span><span lang='"en-US'">regulations</span><span lang='"en-US'"> and purchasing polic</span><span lang='"en-US'">ies</span><span lang='"en-US'">. </span></p>'r'n<p> </p>'r'n<p><strong>Main Responsibilities </strong></p>'r'n<ul>'r'n<li>'r'n<p><a name='"result_box2'"></a><span lang='"en-US'">Carry out product </span><span lang='"en-US'">orders</span><span lang='"en-US'"> from suppliers;</span>;</p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box3'"></a><span lang='"en-US'">Participate in the research, selection, evaluation and validation of suppliers</span>;</p>'r'n</li>'r'n<li>'r'n<p><span lang='"en-US'">S</span><span lang='"en-US'">chedul</span><span lang='"en-US'">e</span><span lang='"en-US'"> orders </span><span lang='"en-US'">according to </span><span lang='"en-US'">clients</span><span lang='"en-US'">'</span> <span lang='"en-US'">needs</span><span lang='"en-US'"> and business objectives</span>;</p>'r'n</li>'r'n<li>'r'n<p><span lang='"en-US'">Research quotes</span><span lang='"en-US'"> and </span><span lang='"en-US'">collect </span><span lang='"en-US'">samples for submissions</span>;</p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box6'"></a><span lang='"en-US'">Perform other duties as required by the company. </span></p>'r'n</li>'r'n</ul>'r'n<p><strong><br />Requirements</strong></p>'r'n<ul>'r'n<li>'r'n<p><span lang='"en-US'">BA</span><span lang='"en-US'">C</span><span lang='"en-US'"> in Operations Management (GOP), Business Administration </span><span lang='"en-US'">in L</span><span lang='"en-US'">ogistic</span><span lang='"en-US'">s</span><span lang='"en-US'"> or other</span>;</p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box8'"></a> <span lang='"en-US'">B</span><span lang='"en-US'">etween one and three years </span><span lang='"en-US'">of </span><span lang='"en-US'">experience in a manufacturing company</span>;</p>'r'n</li>'r'n<li>'r'n<p>Advanced skills in Microsoft Office (Word, Excel);</p>'r'n</li>'r'n<li>'r'n<p>Good knowledge of ERP systems.</p>'r'n</li>'r'n</ul>'r'n<p><strong><br />Skills</strong></p>'r'n<ul>'r'n<li>'r'n<p><a name='"result_box9'"></a> <span lang='"en-US'">Knowledge in the order </span><span lang='"en-US'">of </span><span lang='"en-US'">production and management of raw materials / components</span>;</p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box10'"></a> <span lang='"en-US'">Professionalism, interpersonal skills and strong ability in work organization;</span></p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box12'"></a> <span lang='"en-US'">Resourcefulness and initiative, active listening and understanding customer needs</span>;</p>'r'n</li>'r'n<li>'r'n<p><a name='"result_box13'"></a> <span lang='"en-US'">Good analytical skills, concern for improvement, team spirit, good communication skills and leadership;</span></p>'r'n</li>'r'n<li>'r'n<p>Good negotiation skills.</p>'r'n</li>'r'n</ul>'r'n<p><a name='"result_box14'"></a> <span lang='"en-US'"><br />Join a growing dynamic company located in eastern Montreal. The company offers benefits, continuing education, a dynamic working environment and opportunities for advancement. </span></p>"}
更新好的,我想是'&'nbsp;当json被发送到服务器时,在破坏它的HTML上。如何消毒?encodeURIComponent () ?或替换()?
function ($http, globals) {
var request = {
method: 'POST',
url: globals.ajax_url,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
return function (action, data) {
var queryStr = "action=" + action;
if (data) {
queryStr += "&data=" + JSON.stringify(data);
}
request.data = queryStr;
return $http(request);
};
}
应该是
echo json_encode($postdata);
$postdata
是变量的名称,而不是$data
终于找到解决办法了。我必须添加encodeuriccomponent,因为&,如果没有转义,将会导致问题。
function ($http, globals) {
var request = {
method: 'POST',
url: globals.ajax_url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
};
return function (action, data) {
var queryStr = "action=" + action;
if (data) {
queryStr += "&data=" + encodeURIComponent(JSON.stringify(data));
}
request.data = queryStr;
return $http(request);
};