为什么我无法将jQuery POST返回到另一个域?

时间:2011-09-03 21:29:17

标签: jquery ajax json

当我在$ .ajax中使用json时,我得到的是firebug中的红色200并且数据被插入数据库中,但是我没有得到JSON返回。

当我使用jsonp时,我甚至无法提交页面。

这是我的代码:

<html> 
    <head> 
    <title>Register</title> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" />
    <link rel="stylesheet" type="text/css" href="http://dev.jtsage.com/cdn/datebox/latest/jquery.mobile.datebox.min.css" /> 




    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
    <script type="text/javascript" src="http://dev.jtsage.com/cdn/datebox/latest/jquery.mobile.datebox.min.js"></script>



<script type="text/javascript">
    $(document).ready(function() {

                     $("#contactus").submit(function(event) {

                $.ajax({
                    type: "POST",
                    url: "http://apsessionmobile.mobi/index.php/api/apsessionmobile/user/",
                    data: $("#contactus").serialize(),
                    dataType: 'jsonp',

                    success: function(msg){
                     //   jQuery("#status").html(msg);
                    alert(msg);
                    }
        })
    })
});
</script>

</head> 
<body> 



<div data-role="page" data-theme="e">

    <div data-role="header" data-position="fixed">
        <h1>Register</h1>
        <a href="home.html" data-icon="back" class="ui-btn-left" data-rel="back">Back</a>
        <a href="home.html" data-icon="home" class="ui-btn-right">Home</a>
    </div><!-- /header -->

    <div data-role="content">   

    <div align="center">

    <form action="JavaScript:void(0);" name="contactus" id="contactus">


    <div id="fnameDiv" data-role="fieldcontain">


        <label for="username">Create User Name:</label>     
        <input id="username" name="username" type="text" />


        <label for="email">Email:</label>       
        <input id="email" name="email" type="text" />



        <label for="password">Password:</label>     
        <input id="password" name="password" type="password" />



        <label for="password2">Repeat Password:</label>     
        <input id="password2" name="password2" type="password" />




        <button type="submit">Register</button>



    </div>




    </form>

    </div>

    </div><!-- /content -->

    <div data-role="footer" data-id="thefooter" data-position="fixed">
        <h4></h4>
    </div><!-- /footer -->
</div><!-- /page -->

</body>

2 个答案:

答案 0 :(得分:0)

不允许通过ajax进行跨域请求。但是,尝试使用网络检查器查看是否:
1)提交表格时提出要求 2)发送的内容 3)返回什么内容(如果有的话)

如果存在跨域访问问题或任何其他js错误,控制台应告诉您。

答案 1 :(得分:0)

  1. JSONP仅适用于GET请求,因为JSONP只包含一个 HTML中加载页面的script元素,其中包含 带有填充(回调)的JSON,用于处理所述JSON数据。然后再次删除script元素。

  2. 我对jQuery不够熟悉,所以这将是一个疯狂的猜测。但是可能发生的是隐藏的表单被提交给隐藏的iframe,带有外部请求。这部分工作,因为数据是成功发送的,除非因为隐藏的iframe现在被另一个域使用,JavaScript无法读取内容,因此无法解析内部的JSON响应。