ajax调用不能传递参数,只能用于某些浏览器

时间:2014-09-15 10:57:00

标签: javascript jquery ruby-on-rails ajax

我对这个应该进行ajax调用的函数有问题:

function updateCountriesPrice(){
        var countryFrom = select_country_from.options[select_country_from.selectedIndex].value;

        var countriesTo = JSON.parse("[" + $('#countriesToUpdate').val() + "]");
        var arrayProductCode = [];
            arrayProductCode=localStorage.list_id.replace(/ /g,'');
        var data = {'products_list': arrayProductCode,
                        'country_from': countryFrom,
                        'countries_to': countriesTo};
        console.log(data);
        $.ajax({
            url: './products_actions_prices',  //Server script to process data
            type: 'POST',
            xhr: function() {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if(myXhr.upload){ // Check if upload property exists
                    myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
                }
                return myXhr;
            },
            //Ajax events

            success: function(data, textStatus, jqXHR){
                $('#div_action_selected').html('').hide();
                jQuery('#wrapper').append('<div class="flash success" >'+jqXHR.responseJSON.text+'</div>');
                setTimeout(function(){$('.flash').slideUp(1000);},3000);
                $('#div_action_selected').html('').hide();
                jQuery.each(jQuery('.check_box'),function(key,value){
                    if(jQuery('#select_all').is(':checked')){
                        $(this).prop('checked', false);
                    }
                });
                $('#select_all').prop('checked', false);//$('#select_actions').hide();
                $('#select_all_products_div').hide();
                localStorage.clear();localStorage.setItem('list_id','');
                setInterval(location.reload(),2500);
                hideDivAction();

            },
            error: function (jqXHR, textStatus, errorThrown){
                $('#div_action_selected').html('<div id=\"errorExplanation\" class=\"errorExplanation\" data-hook=\"\">'
                    +' <h2>One error prohibited this action:</h2>'
                    +' <p>There were problems with the call.</p>'
                    +' </div>');
                    setTimeout(function(){$('#div_action_selected').slideUp(1000);},3000);
                    //$('#select_actions').attr('value','');
            },
            // Form data
            data: data,
            //Options to tell jQuery not to process data or worry about content-type.
            cache: false,
            contentType: false,
            processData: false
        });


    }

使用chrome调用工作,我看到成功结果,但我的params变量不包含我用ajax传递的数据。 我打电话的时候     的console.log(数据); 我可以完全按照我想要的方式查看数据但是它们没有到达我的轨道控制器。

使用firefox ajax或者启动。

感谢。

1 个答案:

答案 0 :(得分:0)

您遗失dataType

根据jQuery

  

dataType(默认值:智能猜测(xml, json ,脚本或html))   类型:字符串   您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。可用的类型(以及作为成功回调的第一个参数传递的结果)是: