JQuery Ajax 请求不通过 post 变量发送

Posted

技术标签:

【中文标题】JQuery Ajax 请求不通过 post 变量发送【英文标题】:JQuery Ajax request not sending through post variables 【发布时间】:2014-01-30 11:39:24 【问题描述】:

当将类型更改为 GET 时,我很难使用 JQuery Ajax 函数通过 post 变量发送。

代码

function loadAttributes() 
            var selectedValues = [];    
            var presentValues = [];    
            $('#attrplaceholder div').each(function()
                if (typeof $(this).data('attrid') !== 'undefined')
                
                    presentValues.push($(this).data('attrid'));
                 
             );
            $("#categories :selected").each(function()
                   selectedValues.push($(this).val()); 
            );



            jQuery.ajax(
               url: 'backend.php?r=products/setProductAttributes',
               type: "POST",
               dataType:"html",
                contentType: 'text/html; charset=utf-8',
               data: ids: selectedValues,presentids: presentValues,
               success: function(json)
alert(json)
                        if(json!='[]')
                            var obj = eval ("(" + json + ")"); 
                            if(obj.json !== 'undefined')
                                    $.each(obj.json, function(k, v) 
                                        if(k==='views')
                                            $("#attrplaceholder").append(v);
                                        
                                        if(k==='rem')
                                            var remvals = v.toString().split(",");
                                            for(i=0;i<remvals.length;i++)
                                                $("#attrgrp_"+remvals[i]).remove();
                                            

                                        
                                    );
                            
                        
               
               );
            return false;
         

        loadAttributes() 

        $("#categories").on("change",function()
            loadAttributes() 
        );

任何指针都会有所帮助,我尝试使用 contentTypes 但仍然没有运气

【问题讨论】:

如果您使用 Firebug 或 Chrome 开发工具,您能否检查网络调用并查看您的 AJAX 调用是否包含请求负载中的数据? 添加error回调函数,并记录textStatus @DavidHoerster - 请求负载发送以下数据 ids%5B%5D=6&ids%5B%5D=16&ids%5B%5D=13 ,因此正在发送数据 【参考方案1】:

contentType 是您发送到服务器端的数据格式。

根据您的情况,您应该将其设置为:application/x-www-form-urlencoded; charset=UTF-8application/json; charset=UTF-8,具体取决于您的服务器端期望的格式

或完全删除它,因为默认情况下contentTypeapplication/x-www-form-urlencoded; charset=UTF-8

Differences between contentType and dataType in jQuery ajax function

【讨论】:

谢谢,应用程序/x-www-form-urlencoded; charset=UTF-8 似乎已经解决了这个问题,我从来没有尝试过这个问题,也没有通过省略选项来使用 contentType 的默认值

以上是关于JQuery Ajax 请求不通过 post 变量发送的主要内容,如果未能解决你的问题,请参考以下文章

jQuery post ajax函数[重复]

如何确定为啥 jQuery ajax $.post 请求不成功?

jQuery .ajax() POST 请求抛出 405(不允许的方法)但 GET 不会

jQuery.ajax()通过 HTTP 请求加载远程数据实力详解

Ajax学习——GET和POST请求(jQuery中的实现方式)

jquery实现Ajax