JSON - 双引号内的单引号

时间:2012-07-05 21:36:03

标签: php javascript ajax json

我有以下代码,我用它来填充表单字段。此代码接收使用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":""}

2 个答案:

答案 0 :(得分:0)

我可以在这里看到至少两个可能的问题。

  1. 您正在使用此选择器: $('#'+ i)。这是否意味着你有HTML id属性只是数字?这不是有效的HTML。
  2. 看起来您正在尝试将 selectedIndex 属性设置为某些JSON元素 e :。prop(“selectedIndex”,e)。您的意思是使用 i 而不是 e 吗?如果您将带有单引号的文本插入HTML属性,则可能会解释语法错误。

答案 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: - )