代码之家  ›  专栏  ›  技术社区  ›  Emre Sevinç

为什么即使$.getjson运行正常,警报也不运行?(回调未执行,即使请求与getjson一起工作正常)

  •  1
  • Emre Sevinç  · 技术社区  · 15 年前

    我有一段代码,比如:

    $.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中都尝试了相同的代码,我总是遇到上面提到的问题。)

    3 回复  |  直到 15 年前
        1
  •  2
  •   Daniel Roseman    15 年前

    您确定您的django代码正在返回,并且没有引发异常吗?据我所见,您的代码无效-您引用了 req['result'] 没有先定义 req .

    如注释中所建议的,查看Firebug的控制台选项卡,查看您的呼叫实际返回的内容。你可能会发现它实际上是一个django错误页面。

        2
  •  3
  •   karim79    15 年前

    $.getJSON 当它收到错误的JSON时,喜欢安静地失败。检查您的JSON是否格式正确,或者尝试使用一个简单的小JSON使其正常工作。来自 manual :

    重要 :从jquery 1.4开始,如果json文件包含语法错误, 请求通常会失败 默默地。避免频繁的手工编辑 因为这个原因,JSON数据。JSON是 具有语法的数据交换格式 比…更严格的规则 javascript的对象文字符号。 例如,所有字符串都表示 在JSON中,它们是否是属性 或值,必须括在 双引号。有关JSON的详细信息 格式,请参见 http://json.org/ .

        3
  •  0
  •   Emre Sevinç    15 年前

    我的错我忘了加上

    req = {}
    

    之前

    req ['result'] = 'Your test is saved.'
    

    (我这边的另一个失败是为回调实现了一个错误处理函数,如果这对于jquery的默认jsonp功能来说是可能的话)。