jQuery の $.parseJSON() を使用して変数を JSON に変換しようとしていますが、JSON 文字列の値の 1 つが HTML コードで構成されています。HTML変数を削除して「test」に置き換えると、$.parseJSONを使用して変数を解析し、オブジェクトを操作できるajaxを使用してphpスクリプトに正常に送信できます。
HTMLコードを変数に渡し、それを解析して、このオブジェクトをphpスクリプトにアクセスできるようにする方法を見つけようとしています。現在、questionshtml[index] 変数がスクリプトを壊しています。
「questionsvalues[index].replace("}{", "},{");」を使用してみました 二重引用符とバックスラッシュを削除しますが、スクリプトはまだ壊れています。$.parseJSON() を使用して適切に解析されるようにHTMLコードを準備するための解決策を誰かが提供できますか?
JavaScript コード
var questionstype = [];
var questionshtml = [];
var questionsquestion = [];
//Store all questions, types, and html for each fieldset into 3 separate arrays
for(var i=1;i<=formpreviewid;i++)
{
questionsquestion.push($("#formelement_"+i + " legend").text());
questionstype.push($("#formelement_"+i).attr("class"));
questionshtml.push($("#formelement_"+i)[0].outerHTML);
};
//format values for each fieldset into values format in mysql
var questionsvalues = [];
var index = 0;
for(var i=1;i<=formpreviewid;i++)
{
questionsvalues.push('{"question":"'+questionsquestion[index]+'","type":"'+questionstype[index]+'","html":"'+questionshtml[index]+'"}');
index++;
};
//format mysql values into JSON format
var questionsvaluesjson = '{"questions":['+questionsvalues+']}';
questionsvaluesjson = $.parseJSON(questionsvaluesjson);
//convert to json
var jsonArray = JSON.stringify(questionsvaluesjson);
$.ajax({
type: 'POST',
url: '/project/templates/yoo_nano2/php/saveform.php',
data: {'formpreviewhtml': formpreviewhtml, 'jsonArray': jsonArray},
beforeSend:function(){
// this is where we append a loading image
$("#formpreview").append('<div style="z-index:3000;" id="divoverlaycontainer"><div id="loaderoverlay"><div class="center" id="loader"><img src="/project/templates/yoo_nano2/images/loader.gif"></div></div></div>');
}, success:function(data){
alert(data + "Saved form successfully.");
//$('#viewresults').empty();
$('#divoverlaycontainer').remove();
// successful request; do something with the data
//$('#viewresults').html(data);
}, error:function(){
// failed request; give feedback to user
alert("Save was unsuccessful. Please try again.");
$('#divoverlaycontainer').remove();
}
});
});
});