使用$ .ajax发送多个数据 - 失败

时间:2013-09-16 16:14:27

标签: jquery ajax arrays object serialization

我有一个可排序的有序列表并使用nestedSortable。 它有效。 但是现在我想在ajax请求中添加一些数据,这会失败。

var sorted = $('ol.sortable').nestedSortable("serialize");
var dataUrl = {};
  $( "ol.sortable li" ).each(function( index ) {
  //console.log( $( this ).attr("id").replace(/\D/g, '') + ": " + $( this ).attr("data-url") );
  dataUrl[$( this ).attr("id").replace(/\D/g, '')] = $( this ).attr("data-url");
});

$.ajax({
  type: "POST",
  data: {sort: sorted, dataurl: dataUrl},

现在的问题是,当我尝试使用PHP foreach-loop时,它会因第一个数据“排序”而失败。 此数据现在是一个字符串。 第二部分“dataurl”是一个对象,我可以用foreach迭代它。

当我可以更改订单时

data: {dataurl: dataUrl, sort: sorted}

然后突然我的dataurl是一个字符串,“sort”是一个对象。

我还尝试设置dataType:JSON,但这不会改变任何内容。

我做错了吗?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

以下是我的方式:

var sorted = $('ol.sortable').nestedSortable("serialize");
var dataUrl = {};
$( "ol.sortable li" ).each(function( index ) {
  //console.log( $( this ).attr("id").replace(/\D/g, '') + ": " + $( this ).attr("data-url") );
  dataUrl[$( this ).attr("id").replace(/\D/g, '')] = $( this ).attr("data-url");
});

var sendedData = {};
sendedData.sort = sorted;
sendedData.dataurl = dataUrl;
$.ajax({
    url: 'myFile.php',
    type: 'POST',
    dataType: 'json',
    data: sendedData,
    success: function(result) {
        // Add your own logic here
    }
});