同步跨域请求?

时间:2012-12-29 01:29:52

标签: jquery asp.net ajax web-services cordova

我需要从html页面向不同域中的webservice接口发送请求。有时,需要同步请求。例如:使用用户名和密码登录并在确认webservice后获得响应。

但是,我使用了jsonp,发现它无法执行同步请求。    (html页面和web服务都在我的控制之下)

有什么好主意吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果您发送标题('Access-Control-Allow-Origin:*'),您只需使用标准的非异步$ .ajax对象。

<?php
    header('Access-Control-Allow-Origin: *');
?>
<html>
...
</html>
<script type="text/javascript">
    $(document).ready( function()
    {
        $("#someID").on('click', function()
        {
            var username = 'username';
            var passwd = 'password';

            $.ajax(
            {
                type:'post,
                dataType:'json',
                url:'http://yoursite.com/web-service.php',
                data:{username:username,password:passwd},
                async:false,
                success:function(data){},
                error:function(jqXhr, textStatus, errorThrown){}
            });
        });
    });
</script>

答案 1 :(得分:0)

async:false已被弃用且有充分理由。

您的登录功能需要重构,以便您在成功回调中使用响应数据。

您的代码需要执行以下操作:

$.ajax({
    /* other options*/
     success:function( response){
          if( response.status=='ok'){
             /* run sucessful login code*/
          }else{
             /* message to user*/
          }
     }

})