我有一个表单要求用户在textarea中输入他们的Google Analytics代码。然后我将此字符串传递到ajax帖子并收到一条错误消息,说我传递的是无效对象。 (我没有在这里粘贴整个错误消息,因为它很长..)
正如预期的那样,Google Analytics代码采用以下形式;
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'some_number']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
我用它来发布到服务器:
$.ajax({
type: "POST",
url: "Settings.aspx/setStats",
data: "{'skey': 'ga_code', 'sval':'" + el.val() + "'}",
dataType: "json",
contentType: "application/json; charset=utf-8"
}); // el.val() being the google analytics code..
如何在没有错误的情况下发布此内容?此外,当用户需要更新它时,我也需要得到它。收到它时会出现同样的问题吗?
答案 0 :(得分:2)
你的目标并非如此;它是一个字符串,您将字符串作为对象传递..尝试以下内容:
data: { skey: 'ga_code', sval: el.val() },
通常将对象转换为查询字符串,如the documentation page所述,但由于您将字符串传递给转换器,我相信它不会起作用。
<强>更新强>
看起来我有点不对劲;以上是无效的json,以下应该有效,作为对上述的修正:
data: { "skey": "ga_code", "sval": el.val() }
键和值必须是双引号,来自what I am reading,虽然我有点困惑,因为我使用了json,就像我先给你一样没有问题。最后,我建议this site来测试你的JSON是否有效。
如果仍然无效,我建议您将contentType更改为以下内容:
"application/x-www-form-urlencoded; charset=utf-8"