Javascript 将JSON数据中的两个或多个图像传递给MVC控制器不起作用
我有一个asp.net mvc web应用程序,它有一个带有一些文本数据标题、说明(例如)和一些图像的表单。由于在将图像发送到服务器之前要调整图像大小,因此我有一个javascript函数来调整图像大小,将所有数据放入一个对象中,并通过ajax调用将其作为JSON发送到服务器 这就是模型:Javascript 将JSON数据中的两个或多个图像传递给MVC控制器不起作用,javascript,ajax,model-view-controller,Javascript,Ajax,Model View Controller,我有一个asp.net mvc web应用程序,它有一个带有一些文本数据标题、说明(例如)和一些图像的表单。由于在将图像发送到服务器之前要调整图像大小,因此我有一个javascript函数来调整图像大小,将所有数据放入一个对象中,并通过ajax调用将其作为JSON发送到服务器 这就是模型: public class ItemCU { public int pid { get; set; } public string pcat { get; set; } public s
public class ItemCU
{
public int pid { get; set; }
public string pcat { get; set; }
public string ptitle { get; set; }
public string pdescription { get; set; }
public double pprice { get; set; }
public int pcount { get; set; }
public int psort { get; set; }
public string[] pimgOrder { get; set; }
public string[] pimgNum { get; set; }
public string[] pimgData { get; set; }
public List<SelectListItem> pcategories { get; set; }
}
这是javascript函数:
function saveData() {
var imgNum = [], imgData = [];
for (var i = 0; i < newOrder.length; i++) {
if (newOrder[i] > 999999) {
imgNum.push(newOrder[i]);
var resimg = resizeImage($("img[data-id='" + newOrder[i] + "'").attr('src'));
imgData.push(resimg);
}
}
var itmData = {
pid: $("#id").val(),
ptitle: $("#title").val(),
pcat: $("#cat").val(),
pdescription: $("#description").val(),
pcount: $("#count").val(),
pprice: $("#price").val(),
psort: $("#sort").val(),
pimgOrder: newOrder,
pimgNum : imgNum,
pimgData : imgData
}
$.ajax(
{
url: '@Url.Action("ItemEdit", "Admin")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ piData: itmData }),
success: function (delres) {
window.location.href = delres.redirectUrl;
},
error: function (delres) {
window.location.href = delres.redirectUrl;
}
}
}
)
}
我在回调部分缩短了ajax调用
当我只选择并发送一个图像时,一切正常,但当我想发送多个图像时,一切都不正常。看起来数据不是由ajax发送的,而是直接通过错误回调继续发送
我做了一个浏览器调试会话的屏幕截图,在这里你可以看到数组pimgdata包含两个图像,所以到目前为止一切都还不错
每当我尝试谷歌我发现的例子,只是发送图像没有其他数据或数据和一个图像
我现在的问题是,如果我的电话出了问题,可能是因为我把它串起来了,或者它没有按照我想要的方式工作
如果能得到一些提示/提示/建议,我将不胜感激。即使是一些我可以在谷歌上搜索的关键词也会很有帮助
提前感谢,,
提姆
我希望这个问题有所有需要的信息
更新:
根据Robby Cornelissen的建议,我发现maxJsonLength似乎存在一个简单的问题。不幸的是,当我用谷歌搜索它时,我通常会找到从服务器向客户端发送数据的答案——反之亦然。正如我已经读到的,不需要编辑webconfig,因为它只用于webservices,而不用于MVC控制器
我读到我可以改为JSON.serialize,但我认为问题还是一样的
老实说,我不明白这是否是向服务器发送数据和/或在服务器端接收数据的问题
有没有关于我可以用谷歌搜索的提示?
谢谢,
提姆
更新2/“解决方案”
经过长时间的搜索,我找到了两页帮助我找到了一个最终有效的“解决方案”。不知道是否有更好的方法,但是
我发现的第一部分是:
他们创建了一个自定义的JsonValueProviderFactory,并用Global.asax中的此工厂替换了默认工厂
此外,我还将maxRequestLength和maxAllowedContentLength添加到我的web.config中,正如我在
也许有更好的解决办法,但对我来说,它奏效了
非常感谢,
Tim[…]数据不是通过ajax发送的,而是通过错误回调直接继续[…]不仅仅是客户端问题,这看起来像是服务器抛出了错误。你检查了服务器的响应了吗?你能不能包括将绑定到mvc ItemEdit操作中的ViewModel/模型?@LukeVillanueva我将模型添加到问题中。很抱歉没有直接这么做。@RobbyCornelissen:非常感谢你的建议。现在我知道了真正的问题,并更新了我的问题,因为我没有找到答案。为什么不在动作控制器内移动调整大小?而不是在脚本上做。