2011-01-05 7 views
0

私は、スクリプトを持っている:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#PrincipleMember_IdNumber").autocomplete({ 
     close: function(event, ui) { 
      var member = {}; 
      member.IDNumber = $("#PrincipleMember_IdNumber").val(); 
      $.getJSON("<%= Url.Action("MemberLookup","Member") %>", member, function(data) { 
       $("#PrincipleMember_Firstname").val(data.FirstName); 
      }); 
     } 
    }); 
}); 

形式:

<fieldset class="fieldsetSection"> 
<legend>Principle Member</legend> 
<table> 
    <tr> 
     <td width="150px" class="editor-label"><%=Html.LabelFor(l=>l.PrincipleMember.IdNumber)%></td> 
     <td class="editor-field"><%= Html.AutoCompleteTextBoxFor(i => i.PrincipleMember.IdNumber, "IdNumber", "AutoComplete")%></td> 
     <td><%=Html.ValidationMessageFor(v => v.PrincipleMember.IdNumber)%></td> 
    </tr> 
    <tr> 
     <td width="150px" class="editor-label"><%=Html.LabelFor(l=>l.PrincipleMember.Firstname)%></td> 
     <td class="editor-field"><%=Html.TextBoxFor(t => t.PrincipleMember.Firstname)%></td> 
     <td><%=Html.ValidationMessageFor(v => v.PrincipleMember.Firstname)%></td> 
    </tr> 
</table> 

、最終的には、JSONの結果アクション:

public JsonResult MemberLookup(Member member) 
{ 
    member = _memberRepository.GetMember(member.IDNumber); 
    return this.Json(member); 
} 

私のJSONの結果が完全に実行され、私は結果を得るが、何らかの理由でスクリプトのこのセクションは実行されませんされています$("#PrincipleMember_Firstname").val(data.FirstName);

を私はalert();に置き換える試みたが、あまりにも実行されていないこと。

誰でも私がここで間違っているのを見ることはできますか?

+0

あなたはエラーのJSコンソールをチェックしましたか? –

+1

ファイアバグを試してみましたか? jsのエラーがあるか、js getが実行されているときにエラーがあるかどうかがわかります。あなたはajax呼び出しから得た応答をすべてチェックすることができます。 –

+0

firebug tells:このリクエストは、GETリクエストで機密情報が使用された場合、第三者のWebサイトに開示される可能性があるため、ブロックされています。 GET要求を許可するには、JsonRequestBehaviorをAllowGetに設定します。 –

答えて

0

私は、JSONの結果を変更する必要がありました:

return this.Json(member, JsonRequestBehavior.AllowGet); 
1

あなたのデータオブジェクトがFirstNameプロパティを持たない可能性があります(サーバー側のメソッドが確実に正常に実行され、200 OKを返します)。

Firefoxを使用している場合は、FireBugを入手し、データオブジェクトの値を確認してください。あなたはクローム使用している場合 - デベロッパーコンソールをチェックします(Ctrl +は+ Iシフト)

console.log(data);$("#PrincipleMember_Firstname").val(data.FirstName);を交換し、JavaScriptコンソール(放火魔のコンソール]タブ、またはChromeのデベロッパーコンソールをチェック - > [コンソール]タブ次のことができるようにすべきです。あなたのオブジェクトを参照してください、そして、あなたが持つかもしれない任意のJSエラー

にオブジェクトが細かい返す場合 - 。オブジェクトがコンソールにない場合console.log(data.FirstName);

を試してみてください - 。その後、あなたの成功の方法は、たぶん、実行していませんサーバー側の呼び出しが成功していない - $.ajax呼び出しで置き換え、エラーイベントを使用して何が間違っているかを確認してください。

また、console.logがundefinedを返した場合、あなたのメソッド呼び出し結果はおそらく有効なjsonオブジェクトを返さなかったでしょう。