不调用JQuery成功/失败回调

时间:2014-02-28 11:03:33

标签: jquery python ajax web-services jquery-callback

我是jQuery的新手。我需要在jQuery中实现的是调用一个用Python编写的Web服务,并根据我收到的消息显示相应的消息。 下面是我到目前为止编写的jQuery代码。

$(document).ready(function(){
$("#loginForm").submit( function () { 
    data = $(this).serialize()
    var serviceUrl = MyServiceUrl;
    $.ajax({
              type: "POST",
              url: serviceUrl,
              data: data,
              success:loginSuccess,
              failure: loginFailure
    });   
    return false;   
});
});

function loginSuccess(data){
    alert(data.status);
}
function loginFailure(data){
    alert(data.status);
}

在我提交表单的HTML表单上,我的电话转到我的网络服务。但是在收到响应后,它不会转到我上面指定的成功或失败回调函数。下面是返回状态的Web服务的python代码。它可以返回案例1或案例2

案例1:

to_json = {"status": "success"}
return HttpResponse(simplejson.dumps(to_json), mimetype="application/json")

案例2:

to_json = {"status": "error","message": str(e)}
return HttpResponseBadRequest(simplejson.dumps(to_json), mimetype="application/json")  

2 个答案:

答案 0 :(得分:1)

删除提交表单,仅使用ajax

$(document).ready(function(){
   $("#your_button_id").click( function () { 
       data = $("#loginForm").serialize()
       var serviceUrl = MyServiceUrl;
       $.ajax({
          type: "POST",
          url: serviceUrl,
          data: data,
          success:loginSuccess(),
          failure: loginFailure()
       });   
       return false;   
   });
});

答案 1 :(得分:0)

此问题归因于Cross-Origin XMLHttpRequest

以下是我的解决方案。

从python返回时,我添加了以下标题

to_json = {"status": "success"}
response = HttpResponse(simplejson.dumps(to_json), mimetype="application/json")
response['Access-Control-Allow-Origin'] = "*"
return response

与HttpResponseBadRequest相同。 所以最终的jQuery代码如下所示。

$(document).ready(function(){
$("#loginForm").submit( function () { 
    data = $(this).serialize()
    var serviceUrl = MyServiceUrl;
    $.ajax({
          type: "POST",
          url: serviceUrl,
          data: data,
          success:loginSuccess,
          error: loginFailure
    });   
    return false;   
 });
});

function loginSuccess(data){
    alert(data.status);
}
function loginFailure(data){
    alert(data.status);
}

我希望它能真正帮助某人......干杯