単純な Ajax を機能させて、ブラウザーがファイルを保存するように求めずに JSON を返すことはできません...しかし、現状では、ajax 呼び出しを機能させることさえできません...教えてくださいあなたは私が達成しようとしていることの1000フィートのビューです. 私は 3 つのタブを作成しようとしています... そのうちの 2 つは、Web サービス呼び出しを介してデータを検索するための、似ているが異なる 2 つの方法を表しています。JSON の結果が返されると、3 番目のタブに結果が表に表示されます。十分に単純に思えます。これら 3 つのコンポーネントを個別にうまく実行できたので、組み合わせは簡単だと思いました。そうではありません。
今私を悩ませているのは、実際に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 ファイルを開くか保存するように求められます...一般的なアドバイスはありますか?私はここで見落としているかもしれませんか?同様の結果を達成するにはどうすればよいでしょうか。
ありがとう
更新:URLまたはメソッドタイプを取得していないように見えます
this.action を呼び出してもフォームのアクションが定義されない理由がわかりません...誰かがそれについて洞察を持っているかどうかわかりませんか? その関数で 2 つの異なるフォームを呼び出しているためでしょうか。
更新 OK、何をしてもアクションまたはリクエストタイプを取得できないようです...これを行うと
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>
これは通常は問題ありません。ただし、ページに少なくとも 2 つのフォームがあるという事実は、おそらく何かを複雑にしています...
<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>
問題は、正しいフォームとアクションを正確に得るにはどうすればよいかということです...