我是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")
答案 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);
}
我希望它能真正帮助某人......干杯