gpt4 book ai didi

javascript - 参数数据为空 Ajax 到 MVC Controller

转载 作者:行者123 更新时间:2023-12-03 02:06:43 26 4
gpt4 key购买 nike

最初,我通过 Ajax 将一个参数传递给我的 MVC Controller ,并且它工作正常。正在接收参数数据,没有任何问题。但是,我现在需要传递一个额外的参数,当我这样做时,两个参数都没有向 Controller 发送数据?谢谢!

Ajax 代码:

        function uploadFile() {
var fileData = new FormData($(form1)[0]); //THIS IS A FILE UPLOAD
var details = JSON.stringify(markers); //MARKERS IS AN ARRAY

$.ajax({
url: '../Home/FilePost',
type: 'Post',
success: function (result) {
var newWindow = window.open('LasView?fileName=' + result, "", "new window");

},
error: function (xhr, status, error) {
alert(xhr.responseText);
},
xhr: function () { // Custom XMLHttpRequest
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) { // Check if upload property exists
// TODO...
}
return myXhr;
},
error: function () { },
data: { filePost: fileData, googleMarkers: details },
cache: false,
contentType: false,
processData: false
});
}

我的 Controller :

[HttpPost]
public string LasPost(HttpPostedFileBase filePost, string googleMarkers){
return something;
}

我的数组:

 var markerObject = {
lat: marker.position.lat(),
lng: marker.position.lng()
};
markers.push(markerObject);

最佳答案

您不能混合使用 FormData 和对象。您必须将每个名称/值对 .append()FormData 实例。

因为您对数组进行了字符串化,并且绑定(bind)到字符串 googleMarkers 参数,所以您的代码需要是

function uploadFile() {
var fileData = new FormData($(form1)[0]); //THIS IS A FILE UPLOAD
var details = JSON.stringify(markers); //MARKERS IS AN ARRAY

fileData.append('googleMarkers', details); // append the name/value pair
$.ajax({
....
data: fileData, // send only the FormData instance
....
});
})

但是,您应该利用 MVC 的模型绑定(bind)功能并发布绑定(bind)到代表您的坐标的模型的数据,例如

public class Coordinate
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}

那么 POST 方法将是

[HttpPost]
public string LasPost(HttpPostedFileBase filePost, IEnumerable<Coordinate> googleMarkers)

并发送该数据

var fileData = new FormData($(form1)[0]);
for(var i = 0; i < markers.length; i++)
{
fileData.append('[' + i + '].Latitude', markers[i].lat);
fileData.append('[' + i + '].Longitude', markers[i].lng);
}
$.ajax({
....
data: fileData,
....
});

关于javascript - 参数数据为空 Ajax 到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49773275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com