我需要从 html 页面向不同域中的 web 服务接口发送请求。有时,需要同步请求。例如:使用用户名和密码登录并在webservice确认后得到响应。
但是,我使用了jsonp,发现它无法进行同步请求。(html页面和webservice都在我的控制之下)
有什么好主意吗?提前致谢。
我需要从 html 页面向不同域中的 web 服务接口发送请求。有时,需要同步请求。例如:使用用户名和密码登录并在webservice确认后得到响应。
但是,我使用了jsonp,发现它无法进行同步请求。(html页面和webservice都在我的控制之下)
有什么好主意吗?提前致谢。
如果您发送 header('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>
async:false
已被弃用,并且有充分的理由。
您的登录函数需要重构,以便您在成功回调中使用响应数据。
您的代码需要执行以下操作:
$.ajax({
/* other options*/
success:function( response){
if( response.status=='ok'){
/* run sucessful login code*/
}else{
/* message to user*/
}
}
})