0

如果浏览器不要求我保存文件,我无法让一个简单的 Ajax 工作并返回 JSON ......然而,就目前而言,我什至无法让 ajax 调用工作......让我给你对我正在努力完成的事情有一个 1000 英尺的视野。我正在尝试拥有 3 个选项卡...其中 2 个代表通过 Web 服务调用搜索数据的两种相似但不同的方式。当 JSON 结果返回时,第三个选项卡将在表格中显示结果。看起来很简单,因为我已经分别成功地完成了这三个组件中的每一个,所以我认为组合会很简单。不是这样。

现在让我烦恼的是,实际上是将 JSON 数据返回到视图,然后切换到该选项卡......我目前遇到的是我进入提交功能并且没有任何反应。这是非常令人沮丧的。首先,这是我设置表单的方式...

@using(Html.BeginForm("SearchByDemographic",
          "SearchPatients",
          FormMethod.Post, 
          new{
              id = "searchByDemographics"
          }
      )
 )

形式没什么特别的。我想在某个时候在那里进行 jq-validation,但是当我到达那里时,我会越过那座桥......这是除了将数据绑定到 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 文件...有没有人有任何一般性建议,我知道这有点专业,所以可能很难得到具体的答案,但任何人都可以提出任何原则我可能在这里俯瞰?您将如何实现类似的结果?

谢谢

更新:似乎我没有得到我的 URL 或我的方法类型

不知道为什么调用 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>

问题是,如何准确地得到正确的形式和动作......

4

0 回答 0