我现在得到了无效的标签错误我已经升级了我的jQuery。我读到新的1.5版本现在对JSON编码更加严格。虽然我使用Zend_Json :: encode(array(“content”=> $ result));编码HTML所以想到这会。
我在手册中读到它已经更新,虽然无法在没有解析错误的情况下使用它。 jQuery JSON Manual
Error: invalid label
Source File: http://domain.local/register/#
Line: 0, Column: 1
Source Code:
{"content":"<div id=\"captcha_captcha.json\">\r\n<div class=\"input\">\r\n\t<div class=\"text-small\"><input type=\"text\" size=\"12\" name=\"captcha.json[input]\" id=\"captcha_id\" \/><\/div> \r\n\t<img src=\"http:\/\/domain.local\/tmp\/captchas
这是我的JavaScript代码。
function regenerateCaptcha<?php echo $params["name"]?>(){
captcha_id = "captcha_<?php echo $params["name"]?>";
$.getJSON("/default/captcha/regeneratecaptcha/name/<?php echo $params["name"]?>.json", function(data){
success : pasteCaptcha<?php echo $params["name"]?>
});
}
function pasteCaptcha<?php echo $params["name"]?>(json){
$("#captcha_<?php echo $params["name"]?> .input").replaceWith(json.content);
}
当我查看URL的来源时:
{"content":"<div id=\"captcha_captcha\">\r\n<div class=\"input\">\r\n\t<div class=\"text-small\"><input type=\"text\" size=\"12\" name=\"captcha[input]\" id=\"captcha_id\" \/><\/div> \r\n\t<img src=\"http:\/\/fantasyolympics.local\/tmp\/captchas\/6498c75d8e3f9b8ed2cbb7a066f962a6.png\" class=\"captcha\" width=\"185\" height=\"36\" \/>\r\n <input type=\"hidden\" name=\"captcha[id]\" value=\"6498c75d8e3f9b8ed2cbb7a066f962a6\" \/> \r\n <a href=\"#\" onclick=\"regenerateCaptchacaptcha();return false;\" class=\"captcha_refresh\" title=\"Try a new code\"><\/a>\t\r\n<\/div>\r\n<\/div>\r\n<script type=\"text\/javascript\">\r\n\tfunction regenerateCaptchacaptcha(){\r\n\t\tcaptcha_id = \"captcha_captcha\";\r\n\r\n\t\t$.getJSON(\"\/default\/captcha\/regeneratecaptcha\/name\/captcha.json\", function(data){\r\n success : pasteCaptchacaptcha\t });\r\n\t} \r\n\t\r\n\tfunction pasteCaptchacaptcha(json){\r\n\t\t$(\"#captcha_captcha .input\").replaceWith(json.content);\r\n\t}\r\n<\/script>\r\n"}
答案 0 :(得分:1)
我刚刚解决了类似的问题。
jQuery抛出无效标签错误的原因是它希望服务以JSONP格式而不是JSON格式进行响应。如果您的服务以JSON格式响应,您将收到此错误消息。
解决方法是对服务进行异步调用,然后使用jQuery.parseJSON解析结果。要调用以JSON格式响应的服务,您的代码应如下所示:
function createRequest() {
try { return new XMLHttpRequest(); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
alert("XMLHttpRequest not supported");
return null;
}
var request = createRequest();
request.open(“GET”, HTTP://URL.of.service.to.call, true);
request.onreadystatechange = callback;
request.send(null);
function callback() {
if(request.readyState != 4) { return }
ObjectYouWant = $.parseJSON(request.responseText);
}
上的代码,在我的应用中使用此解决方案
答案 1 :(得分:1)
当我从几个版本升级jquery时出现此问题。
我使用的是jquery表单插件,所以我没有直接控制解码json字符串。
我发现这个问题与jquery 1.5有关,而是使用了1.4.4(和表单插件的v2.73)而且它运行良好。