当我在$ .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>
答案 0 :(得分:0)
不允许通过ajax进行跨域请求。但是,尝试使用网络检查器查看是否:
1)提交表格时提出要求
2)发送的内容
3)返回什么内容(如果有的话)
如果存在跨域访问问题或任何其他js错误,控制台应告诉您。
答案 1 :(得分:0)
JSONP仅适用于GET请求,因为JSONP只包含一个
HTML中加载页面的script
元素,其中包含
带有填充(回调)的JSON,用于处理所述JSON数据。然后再次删除script
元素。
我对jQuery不够熟悉,所以这将是一个疯狂的猜测。但是可能发生的是隐藏的表单被提交给隐藏的iframe,带有外部请求。这部分工作,因为数据是成功发送的,除非因为隐藏的iframe现在被另一个域使用,JavaScript无法读取内容,因此无法解析内部的JSON响应。