发送ajax发布数据跨浏览器

时间:2014-12-28 08:34:47

标签: jquery post cross-browser

我需要帮助。 它的小应用程序,用于在一个div容器中操作html元素。单击使用jQuery保存后,我获取所有元素,并使用post方法将其发送到另一个带有ajax的页面。在大多数计算机上运行正常,但在某些计算机上它会发送空数据字符串(主要是Safari浏览器)。

代码:

<div class="container"></div>
<div class="save">save</div>

JS:

$('.snimi').click(function () {

    //get all elements from container with "elements" class name!
    elementi = $('.container > .element');


    data = "";

    for (i = 0; i < elementi.length; i++) {
        current_element = elementi[i];

        //get class name and clear rest!
        element_class = current_element.className.replace('element', '');
        element_class = element_class.replace('ui-draggable ui-draggable-handle ui-resizable', '');
        class_name = element_class.replace(/ /gi, '');

        element_width = current_element.width;
        element_height = current_element.height;

        //name;left;top;width;height|
        data += class_name + ";";
        data += $(current_element).position().left + ";";
        data += $(current_element).position().top + ";";
        data += $(current_element).width() + ";";
        data += $(current_element).height();
        i != elementi.length - 1 ? data += "|" : '';
    }

    $.post("somepage.php",
        {
            snimi_xmas: true,
            data: data,
        },
        function (data, status) {
            if(!isNaN(data)){
                window.location.href = "finish.php?view="+data;
            }else{
                alert(data);
            }

        });

});

有什么问题?

1 个答案:

答案 0 :(得分:0)

你正在使用“finish.php?view =”+ data“ - 这意味着它的GET

通常我们使用这种方式使用JQuery

首先需要设置jQuery.ajaxSettings.traditional = true; 而不是创建对象并将其发送到使用数据对象

jQuery.ajaxSettings.traditional = true;

$.ajax({
  url: "some.php",
  context: document.body,
  dataType:"jsonp",
  contentType:"application/json",
  type: 'POST',
 data: {"values":["401","809","2839","3189"]}
}).done(function(data) {
        //Your code on response             
});

希望这会对你有所帮助。