MVC通过javascript发布到控制器奇怪的json对象行为
提交表单时,我用javascript捕获它。我进行了一些验证,创建了一个json对象,并将其传递给$.post()。在我的控制器中,我使用与json对象相同的定义定义定义了一个对象。我发现,如果我没有访问javascript中的json对象,那么当它到达控制器时,它将为null。如果我在它的字段上做了一个警报,那么控制器将填充值。知道为什么会这样吗MVC通过javascript发布到控制器奇怪的json对象行为,javascript,asp.net-mvc,Javascript,Asp.net Mvc,提交表单时,我用javascript捕获它。我进行了一些验证,创建了一个json对象,并将其传递给$.post()。在我的控制器中,我使用与json对象相同的定义定义定义了一个对象。我发现,如果我没有访问javascript中的json对象,那么当它到达控制器时,它将为null。如果我在它的字段上做了一个警报,那么控制器将填充值。知道为什么会这样吗 $(function(){ $("#VideoForm").submit(function () { va
$(function(){
$("#VideoForm").submit(function () {
var video = $("#txtVideo").val();
var val = getVideoID(video);
if (val.ID == -1) {
event.preventDefault();
alert("Invalid url. Only Vimeo and YouTube are supported.")
$("#txtVideo").val("")
return false;
}
// if this is commented out then my controller parameter object is null
// if this is uncommented then my controller parameter object is filled in
//alert(val.ID);
//alert(val.Source);
$.post('/Home/Index', val, function (data) {
});
});
function getVideoID(videolink){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = videolink.match(regExp);
if (match && match[7].length == 11)
{
//alert("youtube video id : "+ match[7]);
alert("Youtube match");
return { ID: match[7], Source: "youtube" };
}
regExp = "vimeo\\.com/(?:.*#|.*/videos/)?([0-9]+)";
match = videolink.match(regExp);
if(match)
{
var videoid = videolink.split('/')[videolink.split('/').length - 1];
alert("Vimeo match");
//alert("vimeo video id :"+videoid);
return { ID: videoid, Source: "vimeo" };
}
else
{
return { ID: -1, Source: "" };
}
};
getVideoID做什么?返回一个对象。更新了原始源代码。但该函数返回的数据很好。也许一些防御性的编码会有所启发。在下次调用try/catch之前测试返回值或属性提取。我正在测试这些值。当我提醒()值时,它们都起作用,一切都起作用。我一拿出警报()就不去了。这就是为什么我很困惑的原因。