JQuery发布功能问题

时间:2010-08-27 12:43:11

标签: asp.net-mvc-2 jquery

我尝试通过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>"); }
               });

我做错了什么?请帮忙! 谢谢!

2 个答案:

答案 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"};