Asp.net mvc 3 MVC3 JQuery Ajax搜索

Asp.net mvc 3 MVC3 JQuery Ajax搜索,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我正在尝试修改以下代码 $(“#artistSearch”).submit(function (event) { event.preventDefault(); var form = $(this); $.ajax({ url: form.attr(“action”), data: form.serialize(), beforeSend: function () { $(“#ajax-loade

我正在尝试修改以下代码

$(“#artistSearch”).submit(function (event) {  
    event.preventDefault();  
    var form = $(this);  
    $.ajax({
        url: form.attr(“action”),
        data: form.serialize(),
        beforeSend: function () {
        $(“#ajax-loader”).show();
    },
    complete: function () {
        $(“#ajax-loader”).hide();
    },
    error: searchFailed,
    success: function (data) {
        $(“#artistTemplate”).tmpl(data).appendTo(“#artist-list”);
    }
});
从允许在同一表单中搜索和返回数据,结果如下:

在单独的脚本文件上

$(function () {

    $("#btnSearch").click(function (event) {
     event.preventDefault();
    var idno = $("#txtIdNo").value;

     $.ajax({
         url: "/Owner/Search",
         type: "POST",
         data: idno,
         datatype: "json",
         beforeSend: function () {
             $("#FullName").html("");
             $("#OwnerId").html("");
             $("#notFound").html("");
             $("#ajax-loader").show();
         },
         complete: function () {
             $("#ajax-loader").hide();
         },
         error: function () {
             $("#notFound").html("Sorry, no data returned."); ;
         },
         success: function (data) {
             $("#OwnerId").html(data.OwnerId);
             $("#FullName").html(data.FullName);
         }
     });
 });

});
在控制器上

    [HttpPost]
    public JsonResult SearchById(string idNo)
    {
        var owner = _ownerService.FindBy(x => x.IdNo == idNo);
        return  Json(owner);
    }
论景观

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <div>
            <p>
               Id No:
               <input type="text" name="txtIdNo"  />
               <input type="button" value="Search" name="btnSearch" />
               <label id="notFound"></label>
            </p> 
        @Html.Hidden("OwnerId")
       .
       .
       .

       <p>
          <input type="submit" value="Create" />
       </p>
    </fieldset>
}
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)

身份证号码:

@Html.Hidden(“所有者ID”) . . .

}
我使用的原因 在视图中,避免在同一表单中使用两个提交按钮,因为我在单击搜索按钮后意识到表单正在验证

在提出类似问题之前,我也研究过这些问题,但没有结果

我一直无法使上述工作,并将感谢任何提供的帮助


我是MVC3和JQuery的新手,您使用表单的方式(抓取正在搜索的字段值并将其发送给控制器操作)可以通过按钮避免提交

<button type="button">Create</button>
创建


这将是避免回发的最快方法


您还可以查看ajaxSubmit(jQuery插件),或者可以使用Ajax.BeginForm而不是Html.BeginForm(但两者都需要一些时间)

jQuery ID选择器(“ID”)-选择具有给定ID属性的单个元素。

您正在使用jquery ID选择器,但在from元素上没有ID属性

<input type="text" name="txtIdNo"  />
<input type="button" value="Search" name="btnSearch" />

to 

<input type="text" id="txtIdNo" name="txtIdNo"  />
<input type="button" id="btnSearch" value="Search" name="btnSearch" />
将id属性添加到表单元素中

<input type="text" name="txtIdNo"  />
<input type="button" value="Search" name="btnSearch" />

to 

<input type="text" id="txtIdNo" name="txtIdNo"  />
<input type="button" id="btnSearch" value="Search" name="btnSearch" />

如果“我在视图中使用的原因是为了避免在同一表单中使用两个提交按钮,因为我在单击搜索按钮后意识到表单正在验证。”那么原因是。。。看看@Yasser,我已经将引用的文章添加到书签中,并将仔细阅读。我已经添加了ID选择器,至少现在正在调用控制器。唯一的问题是传递给控制器的是空值。我已将数据从data:更新为data:{idNo:idNo},但仍然传递空值。我还尝试更改var idno=$(“#txtIdNo”).value;to var idno=$(“#txtIdNo”).val();没有成功。使用Fiddler清除缓存,现在可以工作了。感谢所有以任何方式帮助我的人。
$.ajax({
         url: "/Owner/Search",
         type: "POST",
         data: {idNo:idno},
         datatype: "json",
         .........
     });
 });