<html>
<script src="json.js";/>
<script src = "jquery.js"/>
<script type="text/javascript">
function PopulateBlendSpecification() {
var data = new Object();
data.Message = "message";
alert(JSON.stringify(data));
$.ajax({
url: "Test.aspx/Test",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: JSON.stringify(data),
success: function (result) {
var listItems = [];
var blendSpecItems = JSON.parse(result.d);
for (var key in blendSpecItems) {
listItems.push('<option value="' + blendSpecItems[key].BlendSpecID + '">' + blendSpecItems[key].BlendName
+ '</option>');
}
var lBox = $('select[id$=lbBlendSpecs]');
$(lBox).append(listItems.join(''));
}
})
}
Test.aspx.cs
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string Test(string message)
{
return message;
}
当我在一个项目中尝试这个时,这很好用。 但是,当我将webmethod移动到同一解决方案中的单独的prjoject时,我得到一个ajax错误:
Error in: http://localhost/Test/MyWebService/Test.asmx/Test
error: undefined
type: ajaxError
readystate: 4
status: 500
答案 0 :(得分:0)
Webmethod区分大小写。在您的代码函数中,参数消息中的公共静态字符串测试(字符串消息)是小写字母,您必须传递 data.Message M是大写,因此方法无法在代码端找到函数。
因此,如果您更改下面的代码,您的代码将正常运行
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string Test(string Message)
{
return Message;
}
答案 1 :(得分:0)
当我将webmethod移动到同一解决方案中的单独的prjoect
时
您是否已将其移至Web服务项目并尝试在Web项目中使用,如果出现这种情况,则会由于跨站点脚本限制而发生此错误。如果您仍然需要将它们放在单独的项目中,则必须使用jsonp并返回jsonp友好响应。
你可以找到更多关于JSONP + ASMX @ JSONP & ASMX Web Service的信息。
答案 2 :(得分:0)
你的asmx文件中有这个标题[System.Web.Script.Services.ScriptService]。