Ajax - 如何获取数据

时间:2016-05-17 22:55:33

标签: javascript jquery python ajax

我一直试图使用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;
&#13;
&#13;

非常感谢。任何提示都会非常有用。

2 个答案:

答案 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.successdata.status

示例json响应 {'success':'yes'}{'status':'yes'}