为什么我用POST方式被改成了get方式


    function ajaxfen1(num,jsonr){
         var url1=globalServer+'/workorder/kcWorkorder/list/ajax?type=1&pageNo='
        var json1=jsonr
        $.ajax({
            type:"POST",
            url:url1+num,
            async:true,
            data:jsonr,
            dataType:'json',
            success:function(data){
                var pagedata=data
                var total=pagedata.totalRevenue
                
                var list=pagedata.list
                var html=''
                var pageers=Math.ceil(pagedata.count/pagedata.pageSize)
                $('.page-count21').html('共'+pagedata.count+'条')
                $('.app1').html('收入总计:'+total+'元')
                for (var i=0;i<list.length;i++) {

大概代码是这样的。但是每次JQ都会默认帮我变成get方式。我想用post--

阅读 7.8k
6 个回答

你是跨域请求了吗?

jQuery API中文文档上指出:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。因为将使用DOM的script标签来加载。

另外ajax函数写法在从jQuery 1.5.1开始版本之后就出现了新的ajax函数写法,建议使用新写法。

例如:

$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
  beforeSend: function ( xhr ) {
    xhr.overrideMimeType("text/plain; charset=x-user-defined");
  }
}).done(function ( data ) {
  if( console && console.log ) {
    console.log("Sample of data:", data.slice(0, 100));
  }
});

jqXHR.done(function(data, textStatus, jqXHR) {});
一个可供选择的 success 回调选项的构造函数,.done()方法取代了的过时的jqXHR.success()方法。

API详解:

jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});

一种可供选择的 error 回调选项的构造函数,.fail()方法取代了的过时的.error()方法。请参阅deferred.fail()的实现细节。

jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });

一种可供选择的 complete 回调选项的构造函数,.always()方法取代了的过时的.complete()方法。

在响应一个成功的请求后,该函数的参数和.done()的参数是相同的:data, textStatus, 和 jqXHR 对象.对于失败的请求,参数和.fail()的参数是相同的:jqXHR 对象, textStatus, 和 errorThrown。请参阅deferred.always()的实现细节。

jqXHR.then(function(data, textStatus, jqXHR) {}, function(jqXHR, textStatus, errorThrown) {});

包含了 .done() 和 .fail()方法的功能,(从 jQuery 1.8 开始)允许底层被操纵。请参阅deferred.then()的实现细节。

推荐使用的注意事项: jqXHR.success(), jqXHR.error(), 和 jqXHR.complete()回调从 jQuery 1.8开始 被弃用。他们将最终被取消,您的代码应做好准备,使用jqXHR.done(), jqXHR.fail(), 和 jqXHR.always() 代替。

这些在jQuery API文档中都有说,建议如果使用jQuery框架比较多的话还是好好了解写jQuery新版本的概况。

jsonp跨域的话。都是get吧

type:"POST",

=>

metod : 'POST'

看一下你的 jQuery 是哪个版本的, 1.9.0之后,type就已经被换成了method了(You should use type if you're using versions of jQuery prior to 1.9.0.)。去官网看文档

新手上路,请多包涵

data:jsonr ??

新手上路,请多包涵

jsonp不支持post

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题