我无法设法让一个简单的Ajax工作并返回JSON而浏览器没有要求我保存文件......但是现在它仍然无法让ajax调用工作......让我给你1000英尺的视角,了解我想要完成的任务。我试图有3个标签...其中2个,代表两种类似但不同的方式通过webservice调用搜索数据。当JSON结果返回时,第三个选项卡将在表中显示结果。看起来很简单,因为我已经成功地分别完成了这三个组件中的每一个,我认为组合很简单。不是这样。
现在令我烦恼的是,实际上是将JSON数据恢复到视图然后切换到该选项卡...我目前遇到的是我进入提交功能并且没有任何反应。这非常令人沮丧。首先,这是我设置表单的方式......
@using(Html.BeginForm("SearchByDemographic",
"SearchPatients",
FormMethod.Post,
new{
id = "searchByDemographics"
}
)
)
表格没什么特别的。我希望在某些时候进行jq验证,但是当我到达那里时我会越过那个桥...除了将数据绑定到jqGrid的函数之外,还应该调用控制器的jquery函数。 ..我做过类似的事情,但不是一起做的......
$('#formSearchByMRN, #searchByDemographics').submit(function (event) {
debugger;
//event.preventDefault();
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
dataType: "json",
success: function (result) {
debugger;
//$('#retTable').html(result);
switchToResultTab(result);
}
});
return false;
});
function switchToResultTab(data) {
debugger;
$("#list").setGridParam({
datatype: 'jsonstring',
datastr: data,
caption: 'Patient Search Result'
}).trigger("reloadGrid");
$('a[href="#retTable"]').click();
};
目前,当我单步执行代码时,我从未通过调试器函数调用...这就是它停止的地方! 我就像地球上正在发生的事情一样?我怎么搞砸了这么简单的函数调用?!我从来没有去过.ajax电话? 让我们假设我在某个地方是个白痴,我可以得到一个疯狂的ajax工作。一旦我得到它,每当我到达成功函数时,我的结果总是空的。如果我切换到完成,浏览器会要求我打开或保存JSON文件...是否有人有任何一般性建议,我知道这是专门的,所以特定的答案可能很难得到,但任何人都可以建议任何原则我可能会在这里俯瞰?你会如何实现类似的结果?
由于
更新:因为我没有使用我的网址或我的方法类型,所以会出现这种情况
不知道为什么调用this.action没有得到定义的表单的动作... 我不知道是否有人对此有任何见解?也许因为我在这个函数中调用了两种不同的形式?
更新 好吧,无论我做什么,我似乎无法获得动作或请求类型... 如果我这样做
var type = this.action;
或
var type = $('#searchByDemographics').attr('action');
var type = this.method;
或
var method = $('#searchByDemographics').attr('method');
我到底在做什么?
更新 我设法将动作放入动作url参数中。似乎没有什么可以让我把这个东西叫做我的方法并回来。
var urlVal = event.target.action;
以上是我如何得到行动 实际HTML:取自IE
<FORM id=searchByDemographics class="ui-tabs-panel ui-widget-content ui-corner-bottom" method=post action=/SearchPatients/SearchByDemographic jQuery1720011976762447693911="75" _submit_attached="true"><UL>
<LI><LABEL for=SSN>SSN</LABEL> <BR><INPUT id=SSN name=SSN></LI></UL>
<UL>
<P>Or</P></UL>
<UL>
<LI><LABEL for=FirstName>FirstName</LABEL> <BR><INPUT id=FirstName name=FirstName value=Betty></LI>
<LI><LABEL for=LastName>LastName</LABEL> <BR><INPUT id=LastName name=LastName value=White></LI>
<LI><LABEL for=dateOfBirth>dateOfBirth</LABEL> <BR><INPUT id=dateOfBirth name=dateOfBirth></LI>
<LI><LABEL for=Address1>Address1</LABEL> <BR><INPUT id=Address1 name=Address1></LI>
<LI><LABEL for=Address2>Address2</LABEL> <BR><INPUT id=Address2 name=Address2></LI>
<LI><LABEL for=City>City</LABEL> <BR><INPUT id=City name=City></LI>
<LI><LABEL for=State>State</LABEL> <BR><INPUT id=State name=State></LI>
<LI><LABEL for=Country>Country</LABEL> <BR><INPUT id=Country name=Country></LI>
<LI><LABEL for=PostCode>PostCode</LABEL> <BR><INPUT id=PostCode name=PostCode></LI></UL><INPUT id=submit class=button value="Search By Demographics" type=submit> </FORM>
通常没问题。但是,我在页面上至少有两个表单的事实可能会使某些事情变得复杂......
<DIV id=searchPatient class="float-left ui-tabs ui-widget ui-widget-content ui-corner-all" jQuery1720011976762447693911="52"><UL class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<LI class="ui-state-default ui-corner-top" jQuery1720011976762447693911="56"><A href="#searchByMRN" jQuery1720011976762447693911="58">Search By MRN</A></LI>
<LI class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active" jQuery1720011976762447693911="57"><A href="#searchByDemographics" jQuery1720011976762447693911="59">Search By Demo</A></LI></UL>
<DIV style="MARGIN-TOP: 6px; DISPLAY: inline; FLOAT: left; MARGIN-LEFT: 6px; MARGIN-RIGHT: 6px" id=searchByMRN class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide">
<FORM id=formSearchByMRN method=post action=/SearchPatients/SearchByMRN?Length=13 data-ajax-update="#retTable" data-ajax-success="switchToResultTab" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
<P>
<UL>
<LI><LABEL for=MRN>MRN#</LABEL><BR><INPUT id=MRN name=MRN></LI>
<LI><LABEL for=MRNDrop>MRNDrop</LABEL><BR><SELECT id=MRNDrop name=MRNDrop><OPTION selected value=MPACMRN>Medipac</OPTION> <OPTION value=NWMRN>NorthWest</OPTION> <OPTION value=BEDFORD>Epic</OPTION> <OPTION value=CHILDRENS>Bedford</OPTION> <OPTION value=CHILDRENS>Childrens</OPTION> <OPTION value=MAGEE>Magee</OPTION> <OPTION value=PASSAVANT>Passavant</OPTION> <OPTION value=MERCY>Mercy</OPTION> <OPTION value=BEST>Medicare</OPTION> <OPTION value=HEALTHPLAN>UPMC Health Plan</OPTION> <OPTION value=EMPIID>EMPI</OPTION></SELECT></LI></UL>
<P></P><INPUT value="Search by MRN" type=submit> </FORM></DIV>
<DIV style="WIDTH: 50%; DISPLAY: inline; FLOAT: left" id=searchByDemographics class="ui-tabs-panel ui-widget-content ui-corner-bottom" jQuery1720011976762447693911="70">
<FORM id=searchByDemographics class="ui-tabs-panel ui-widget-content ui-corner-bottom" method=post action=/SearchPatients/SearchByDemographic jQuery1720011976762447693911="75" _submit_attached="true">
<UL>
<LI><LABEL for=SSN>SSN</LABEL> <BR><INPUT id=SSN name=SSN></LI></UL>
<UL>
<P>Or</P></UL>
<UL>
<LI><LABEL for=FirstName>FirstName</LABEL> <BR><INPUT id=FirstName name=FirstName value=Betty></LI>
<LI><LABEL for=LastName>LastName</LABEL> <BR><INPUT id=LastName name=LastName value=White></LI>
<LI><LABEL for=dateOfBirth>dateOfBirth</LABEL> <BR><INPUT id=dateOfBirth name=dateOfBirth></LI>
<LI><LABEL for=Address1>Address1</LABEL> <BR><INPUT id=Address1 name=Address1></LI>
<LI><LABEL for=Address2>Address2</LABEL> <BR><INPUT id=Address2 name=Address2></LI>
<LI><LABEL for=City>City</LABEL> <BR><INPUT id=City name=City></LI>
<LI><LABEL for=State>State</LABEL> <BR><INPUT id=State name=State></LI>
<LI><LABEL for=Country>Country</LABEL> <BR><INPUT id=Country name=Country></LI>
<LI><LABEL for=PostCode>PostCode</LABEL> <BR><INPUT id=PostCode name=PostCode></LI></UL><INPUT id=submit class=button value="Search By Demographics" type=submit> </FORM></DIV></DIV>
问题是,如何准确地获得正确的形式和行动......