我有一个自定义的新项目表单,我在SharePoint 2007中使用。我想要发生的是,一旦用户输入了资产ID并且他们离开该字段,则会显示一个ajax查询检查以查看该资产ID是否可用。在SharePoint中使用JQuery 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",
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;
}
}