2011-09-03 65 views
0

当我在我的$ .ajax中使用json时,我所得到的只是一个红色的200,并且数据插入到数据库中,但是我没有得到JSON返回。为什么我无法将jQuery POST返回到其他域?

当我使用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> 

+0

根本没有反应?萤火虫说什么?你可以发布相关的服务器端代码,发送JSON响应... – Rafay

回答

0

跨域请求不通过Ajax不允许的。然而,尝试使用网络检查,看是否:
1)请求时,当您提交表单
2)什么是发送
3)返回什么内容(如果有的话)

如果有跨域访问问题或任何其他js错误,控制台应该告诉你。

+0

该职位是制作和数据库填充。表单域成功发送。我只是没有得到任何回报。 – jini

+0

当我执行jsonp – jini

+0

网络检查器时,没有任何反应,挑选请求并选择“内容”以查看服务器返回的内容。如果没有,你应该看看你正在执行数据库更新的后端。也许你因为某种原因有过早的“退出”。如果你有php后端,查看error_log。如果数据库填充后发生错误,并且错误显示已关闭,那么您将获得空页面 – jancha

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

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

+0

而不添加您自己的iframe传输,jquery不会自动创建隐藏表单/ iframe。它不能处理返回的数据,因为它不是来自同一个域。 –

+0

嗯有趣的是,我一直认为数据甚至不会被发送到XMLHttpRequest的不同域。呃,好吧! – CharlesLeaf

相关问题