在SharePoint中使用JQuery AJAX调用

时间:2009-11-06 10:25:14

标签: jquery ajax sharepoint

我有一个我在SharePoint 2007中使用的自定义新项目表单。我想要发生的是,一旦用户输入资产ID并且他们离开该字段,ajax查询将检查是否存在资产ID可用。

我在普通的.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",
                    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;
    }
}

2 个答案:

答案 0 :(得分:0)

您的网址有些奇怪:checkAsset.aspx/AssetIdAvailable我不确定这是不应该的?使用参数或是否尝试调用类中的方法,但URL无效(除非您有一些自定义URL重写规则)。

看起来如果你能使服务在jQuery调用之外正常工作并修复你的URL,那么它将正常工作。

答案 1 :(得分:0)

我是第二个Peter的回答,尝试在浏览器中检查您的服务电话,一旦您的直接浏览器调用工作,那么您可以使用您的ajax。到目前为止,我还没有完成一大堆Sharepoint,但是如果它们与我的解决方案一起部署,那么我必须在其中编写的大多数URL都有很好的“〜”类型功能,如果它直接部署为一个Sharepoint资源然后它将是/ somedir / myfile。