我有一段代码,例如:
$.getJSON("http://mysite.org/polls/saveLanguageTest?url=" + escape(window.location.href) + "&callback=?",
function (data) {
var serverResponse = data.result;
console.log(serverResponse);
alert(serverResponse);
});
它的工作正常,因为它向我的服务器发出跨域请求,服务器按照我的预期保存数据。不幸的是,即使服务器保存数据并发回响应,我也无法获得任何警报或console.log运行。为什么会这样?服务器端代码(如果相关):
def saveLanguageTest(request):
callback = request.GET.get('callback', '')
person = Person(firstName = 'Anonymous',
ipAddress = request.META['REMOTE_ADDR'])
person.save()
webPage = WebPage(url = request.GET.get('url'))
webPage.save()
langTest = LanguageTest(type = 'prepositionTest')
langTest.person = person
langTest.webPage = webPage
langTest.save()
req ['result'] = 'Your test is saved.'
response = json.dumps(req)
response = callback + '(' + response + ');'
return HttpResponse(response, mimetype = "application/json")
我错过了什么? (我在我的网页和Firebug中尝试了相同的代码,我总是遇到上述问题。)
答案 0 :(得分:3)
$.getJSON
喜欢在收到格式错误的JSON时无声地失败。检查您的JSON是否格式正确,或者尝试使用一小段JSON来使其正常工作。来自manual:
重要:从jQuery 1.4开始,如果JSON文件包含语法错误, 请求通常会失败 默默。避免频繁的手工编辑 由于这个原因,JSON数据。 JSON是 具有语法的数据交换格式 比那些更严格的规则 JavaScript的对象文字符号。 例如,表示所有字符串 在JSON中,它们是否属性 或值,必须包含在内 双引号。有关JSON的详细信息 格式,请参阅http://json.org/。
答案 1 :(得分:2)
你确定你的Django代码正在返回,而不是引发异常吗?据我所知,您的代码无效 - 在没有先定义req['result']
的情况下引用req
。
根据评论中的建议,查看Firebug的控制台选项卡,了解您的通话实际返回的内容。你可能会发现它实际上是一个Django错误页面。
答案 2 :(得分:0)
我的坏'我忘了添加
req = {}
之前
req ['result'] = 'Your test is saved.'
(另一个失败是我为回调实现了一个错误处理函数,如果这对jQuery的默认JSONP功能完全可行的话。)