我有以下代码,我用它来填充表单字段。此代码接收使用PHP json_encode函数编码的JSON数据集。
代码适用于单引号和双引号,但是有些情况下我会在双引号内使用单引号。一个例子是文本区内的文字,可能会说:该男子说“我要去度假”。
我读过单引号不需要转义,双引号正在被正确转义。我已经将Firebug中的JSON代码复制到验证器中,它返回正确,这让我觉得下面的代码有问题。我在Firebug中遇到的错误是语法错误。奇怪的是,如果我有两个单引号(即打开和关闭),则问题不再存在。
我花了3个小时看这个,似乎没有更接近分辨率。我一如既往地提出所有建议!我可以根据需要提供更多代码段。
$.ajax({
type: "GET",
url: "casedata.php",
data: {'caseid':'<?php echo($caseid); ?>', 'callid':'<?php echo($_GET['callid']); ?>', 'stage':'thlViewCall'},
dataType: "json",
async: false,
success: function(data){
$.each((data), function(i, e) {
if($("input[type=text]")) {
$('#'+i).val(e);
}
if($("input[type=select-one]")) {
$('#'+i+' option').prop("selectedIndex", e);
}
if($("input[type=select-multiple]")) {
$('#'+i+' option').prop("selectedIndex", e);
}
if($("input[type=radio]")) {
$('input[name="'+i+'"][value="'+e+'"]').attr('checked', 'checked');
}
});
}
});
修改
道歉,请在下面找到JSON演示此错误:
{"calldate":"06-07-2012","adviserid":"18","service":"THL","dda_sen":"eqa","finalhearing_date":"24-07-2012","reason_for_tribunal":"part_4","next_deadline_description":"before_final_evidence","understanding_paperwork":"1","ability_negotiate":"1","legal_complexity":"1","comments":"test","action":"referred_to_tss_for_telephone_support","bgInfo":"The man said \"I'm going on holiday\"","initialAdvice":"test2","logreceived":"no","monitored":"no","monitoredby":"","monitoreddate":"00-00-0000","monitorednotes":"","legalsupport":"no","legalsupportid":"0","legalsupportdate":"00-00-0000","legalsupportnotes":""}
答案 0 :(得分:0)
我可以在这里看到至少两个可能的问题。
答案 1 :(得分:0)
我已经解决了这个问题,并希望根据我在多个主题的多个问题中收到的建议来分享我的结果。
我发现选择使用输入[类型]非常不可靠,由于某种原因,我的文本字段被检测为无线电盒导致不需要的结果。解决这个问题的最简单方法是使用应用于我的表单元素的类选择器,我的代码示例如下:
if($("[name="+i+"]").is(".textbox, .select")) {
$("[name="+i+"]").val(e);
}
if($("[name="+i+"]").is(".radio")) {
$("input[name="+i+"][value="+e+"]").attr('checked', 'checked');
}
这将评估在“i”javascript变量中传递的字段的名称,检查字段的CSS类,然后相应地设置值或属性。这在我看来非常整洁,使得CSS样式也更容易。
我希望我的解释取消了-1,因为错过了开头的JSON: - )