我尝试通过json对象将一些数据发布到我的asp.net mvc视图,这里是代码
$("#submitButton").click(function () {
var name = $("#name")[0].valueOf();
var price = $("#price").valueOf();
var url = $("#url").valueOf();
var product = { Name: name, Price: price, Url: url };
$.post("/Home/NewProduct", product, function (json) { $('ul.items').append("<li><img src=" + url + "/></li>"); },"json");
});
现在,结果是错误:
未捕获异常:[例外...“WrappedNative原型对象上的非法操作”nsresult:“0x8057000c(NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)”location:“JS frame :: http://localhost:1804/Scripts/jquery-1.4.2.min.js :: f :: line 132”data:no ]
我尝试使用JQuery 1.4.1和1.4.2,如果我尝试此代码,则错误是相同的
$.ajax({
type: "POST",
url: "/Home/NewProduct",
dataType: "json",
data: { Name: name, Price: price, Url: url },
success: function () { $('ul.items').append("<li><img src=" + url + "/></li>"); }
});
我做错了什么?请帮忙! 谢谢!
答案 0 :(得分:3)
要获取输入类型元素的值,请使用.val()
代替.valueOf()
,如下所示:
var name = $("#name").val(),
price = $("#price").val(),
url = $("#url").val();
当你在一个jQuery对象上调用.valueOf()
时,它会得到一个DOM元素数组......并且不能很好地序列化:)
答案 1 :(得分:0)
在你的$ .post调用中,如果你将JSON作为第四个参数传递,那么jQuery只会期望VALID json string
,否则它可能会导致错误。
有效JSON的示例是
var json = {"a":"my name", "b":"my school"};