2009-11-06 4 views
0

SharePoint 2007에서 사용하고있는 사용자 지정 새 항목 양식이 있습니다. 내가 원하는 것은 사용자가 자산 ID를 입력하고 필드를 떠나면 ajax 쿼리는 해당 저작물 ID가 사용 가능한지 확인합니다.SharePoint에서 JQuery AJAX 호출 사용

내가 돌려받을 모든 내부 서버 오류이며, IIS는 기록을 500

의 상태 코드를 기록하지만 SharePoint의 동일한 코드를 사용하는 경우, 정상적인 .NET 웹 applicaiton에 다음 코드를 성공적으로 사용했습니다 뒤에 새로운 자산 형태로

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", 
        success: function(message) { 
         if (message.d != true) { 
          //$('#ctl00_PlaceHolderMain_saveNew').attr('disabled', 'disabled'); 
          alert('This asset id is available'); 
         } 
         else { 
          alert('This asset id is NOT available'); 
          //$('#ctl00_PlaceHolderMain_saveNew').removeAttr('disabled'); 
         } 
        }, 
        error:function (xhr, ajaxOptions, thrownError){ 
         alert(xhr.statusText); 
        } 
       }); 
      } 
     });    
    }); 

코드

public class CheckAssetAvailable : Page 
{ 
    [WebMethod] 
    public static bool 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(); 

     return available; 
    } 
} 

답변

0

URL에 이상한 점이 있습니다. checkAsset.aspx/AssetIdAvailable 이것이 무엇인가 궁금한가요? 매개 변수를 사용하거나 클래스 내의 메소드를 호출하려고하는지 여부는 지정되지만 URL은 유효하지 않습니다 (일부 맞춤 URL 다시 쓰기 규칙이없는 경우).

서비스가 jQuery 호출 외부에서 올바르게 작동하고 URL을 수정하면 올바르게 작동하는 것처럼 보입니다.

0

두 번째 피터의 대답은 브라우저에서 서비스 호출을 확인하고 직접 브라우저 호출이 작동하면 아약스로 작업 할 수 있습니다. 지금까지 셰어 포인트를 다 해본 적이 없지만, 코드에 넣어야했던 URL의 대부분은 내 솔루션과 함께 배포 된 경우 좋은 작은 "~"유형 기능을 가지고있었습니다. 공유 자원은/somedir/myfile이됩니다.