我在Tastypie(Django)做过网络服务。我想做POST - 在FF上工作,在Chrome上不起作用。相反,POST出现OPTIONS和代码200.当项目移动到PhoneGap时,POST不能正常工作
请提示。
我的jQuery代码:
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function(){
$("#pay").click(function () {
var data = JSON.stringify({
"measure": $('#odczytLicznika').val(),
});
$.ajax({
type: 'POST',
url: 'http://127.0.0.1:8080/api/entry/',
contentType: 'application/json',
data: data,
dataType: 'json',
processData: false,
success: redirect()
});
$('#validate').click(function () {
if ($('#viewCounter').val() == '') {
$('#money').text("Please put here value");
return;
}
});
function redirect()
{
window.location = "profile_page.html";
}
});
});
</script>
我的api.py - 我的Django项目中的TastyPie
class urlencodeSerializer(Serializer):
formats = ['json', 'jsonp', 'xml', 'yaml', 'html', 'plist', 'urlencode']
content_types = {
'json': 'application/json',
'jsonp': 'text/javascript',
'xml': 'application/xml',
'yaml': 'text/yaml',
'html': 'text/html',
'plist': 'application/x-plist',
'urlencode': 'application/x-www-form-urlencoded',
}
def from_urlencode(self, data, options=None):
""" handles basic formencoded url posts """
qs = dict((k, v if len(v) > 1 else v[0])
for k, v in urlparse.parse_qs(data).iteritems())
return qs
def to_urlencode(self,content):
pass
class EntryResource(ModelResource):
class Meta:
queryset = Entry.objects.all()
resource_name = 'entry'
authorization = Authorization()
filtering = {"title": ALL}
serializer = urlencodeSerializer() # IMPORTANT
#serializer = Serializer(formats=['json', 'jsonp', 'xml', 'yaml', 'html', 'plist'])
class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'auth/user'
excludes = ['email', 'password', 'is_superuser']
authorization = Authorization()
filtering = {
'user': ALL_WITH_RELATIONS,
'pub_date': ['exact', 'lt', 'lte', 'gte', 'gt'],
}
答案 0 :(得分:0)
这可能与CORS有关。尝试添加$.support.cors = true;
并查看Is it safe to use $.support.cors = true; in jQuery?以获取更详细的答案。您还可以使用服务的相对路径(如果可能的话)。