我一直试图使用AjAX获取数据。下面是具有输入值的HTML表单的代码。数据值通过提交按钮被推送到python处理程序。在服务器端,python处理程序将数据存储在数据库中。
现在我需要首先通过AJAX从数据库中获取数据,并显示是否存在现有值。数据包括"是或否"状态,非常简单。但我不知道如何使用ajax获取数据,并根据获取的数据正确设置输入值。问题是,如何通过Ajax调用处理程序来返回值?
<html>
<script language="javascript" src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
send_data = function(status) {
$.ajax({
url: "/Subscription",
dataType: "json",
data: {'status' : status},
type: "POST",
cache: false
}).done(function(data, status, xml) {
var obj = jQuery.parseJSON(data);
alert(obj.success);
}).fail(function(jqXHR, textStatus, errorThrown) {
}).always(function() {
});
}
$(document).ready(function() {
$("#subscription").submit(function() {
send_data($("#switch-1").prop('checked') ? 'yes' : 'no');
return false;
});
});
</script>
</head>
<body>
<form id="subscription" action="" method="post">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1">
<input type="checkbox" id="switch-1" class="mdl-switch__input" id="status" name="status" />
<span class="mdl-switch__label">blemtorp@google.com subscription status is: << subscription >> </span>
<input type="submit" value="Submit" /></label>
</form>
</body>
</html>
&#13;
非常感谢。任何提示都会非常有用。
答案 0 :(得分:0)
要根据用户输入执行异步调用,您必须发出请求,然后明确指定要在请求中执行的操作成功,失败等。
例如:
function send_data(shouldRequest, successCallback) {
// if ...prop('checked'), run ajax request
if (shouldRequest) {
$.ajax({
url: "/Subscription",
dataType: "json",
data: {'status' : status},
type: "POST",
cache: false
}).done(function(data, status, xml) {
// when request completes, run callback function
successCallback(data);
});
}
}
$("#subscription").submit(function() {
var checked = $("#switch-1").prop('checked');
var successCallback = function(data) {
// perform success actions on data here
}
send_data(checked, successCallback);
});
如果将successCallback
传递给send_data
函数,则只有在异步调用成功完成时才能运行函数。您还可以传入其他函数来处理错误等。
您还可以传入其他函数来处理来自ajax请求的不同结果,例如处理错误的函数。
答案 1 :(得分:0)
通过在ajax中设置dataType:"json"
,无需在JSON.parse()
回调中使用done()
。
根据您的json使用data.success
或data.status
。
示例json响应
{'success':'yes'}
或{'status':'yes'}