0


0

SharePoint 2007で使用しているカスタムの新しいアイテムフォームがあります。 私がやりたいことは、ユーザーがアセットIDを入力してフィールドから出ると、そのアセットIDが使用可能かどうかをAjaxクエリーが確認することです。

通常の.NET Webアプリケーションでは次のコードを使用しましたが、SharePointで同じコードを使用した場合、返されるのは内部サーバーエラーだけで、IISログには500のステータスコードが記録されます。

*新しいアセット形式のJQuery

$(document).ready(function(){

$( '#ctl00_PlaceHolderMain_newAsset_assetId')。blur(function(){assetId = $(this).val();)

if(assetId.length> = 3){$。ajax({type: "POST"、url: "checkAsset.aspx / AssetIdAvailable"、data: "{'assetId': '" assetId "'}"、contentType: " application / json; charset = utf-8 "、dataType:" json "、成功:機能(メッセージ){if(message.d!= true){//$('#ctl00_PlaceHolderMain_saveNew').attr('disabled '、 '{無効'); alert( 'このアセットIDは使用不可');} else {alert( 'このアセットIDは使用不可'); //$('#ctl00_PlaceHolderMain_saveNew').removeAttr('disabled ');}}エラー:function(xhr、ajaxOptions、thrownError){alert(xhr.statusText);}}); ;}}); ;));

コードビハインド

パブリッククラスCheckAssetAvailable:Page {[WebMethod]パブリック静的ブールAssetIdAvailable(string assetId){int recCount = 0;} bool available = false;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings ["ICTAssetDb"]。ConnectionString); SqlCommand comm = new SqlCommand( "usp_IsAssetIdAvailable"、conn); comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add( "@ AssetId"、SqlDbType.NVarChar).Value = assetId; conn.Open(); recCount = int.Parse(comm.ExecuteScalar()。ToString()); if(recCount == 0){available = true; }

comm.Dispose(); conn.Close(); conn.Dispose();

返品可能}}

2 Answer


0


あなたのURLについて何か奇妙なことがあります: `checkAsset.aspx / AssetIdAvailable`これがaであることになっているかどうかわかりませんか? パラメータを使用するか、クラス内のメソッドを呼び出そうとしているかどうか。ただし、URLが無効である(カスタムURL書き換え規則が設定されている場合を除く)

あなたがサービスがjQuery呼び出しの外側で正しく機能することができて、あなたがあなたのURLを修正するならば、それは正しく機能するでしょう。


0


私は2度目のPeterの答えです。ブラウザであなたのサービス呼び出しをチェックしてみてください、そしてあなたが直接ブラウザ呼び出しを動かしたら、あなたはそれをあなたのajaxで動かすことができます。 私は今までSharepointを全部やったことはありませんでしたが、私がコードで書かなければならなかったURLのほとんどは、それらが私のソリューションでデプロイされ、そしてSharepointリソースの場合は/ somedir / myfileになります。