我无法获得在OnSuccess()
内触发Ajax.BeginForm()
方法的元素的目标。所以这是代码片段:
@using (Ajax.BeginForm("InsertModel", "Home", new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "doWork(this,'SomeCustomText')"
}))
{
<div id="container">
<--Some HTML--!>
<input type="submit" value="OK"/>
</div>
}
<script>
function doWork(e,customText)
{
alert(customText); //It shows 'SomeCustomText', so its good.
alert(e); //[Object] object
alert(e.prop("tagName")); //Object #<Object> has no method 'prop'
alert(e.attr("tagName")); //Object #<Object> has no method 'attr'
alert(jQuery(e).html()); //undefined
alert(jQuery(e).prop("tagName")); //undefined
alert(e.target); //undefined
alert(jQuery(e).target); //undefined
}
<script/>
问题:
如何获得目标?!谢谢
jQuery版本应如下所示:
jQuery.ajax({
url:"/Home/InsertModel",
data:"some post data",
type:"POST",
success:function(data){
doWork(this,data); // so i really do not care about data! I just need jQuery(this)
}
})
答案 0 :(得分:4)
如果要访问表单元素,则有很多选项,如果页面上只有一个表单,则可以执行$("form")
,jquery将为您提供表单元素。
另一个选择是更改Ajax.BeginForm构造函数,它将表单id作为参数,如下所示:
@using (Ajax.BeginForm("InsertModel", "Home",null, new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "doWork('SomeCustomText')"
}, new {id = "myFormId"}))
{
<div id="container">
<--Some HTML--!>
<input type="submit" value="OK"/>
</div>
}
并在javascript中
<script>
function doWork(customText)
{
alert(customText); //It shows 'SomeCustomText', so its good.
// find the form by id
$("#myForm1");
// find forms in the page
$("form")
}
<script/>
在简单的JQuery中:
$.ajax({
url:"/Home/InsertModel",
data:"some post data",
type:"POST",
success:function(data){
// find the form by id
$("#myForm1");
// find forms in the page
$("form")
...
}
});