【发布时间】:2015-03-13 06:38:14
【问题描述】:
我有一个文本框和旁边的按钮。我想通过 Jquery ajax 调用将作为 EmailId 的文本框的内容发送到 webmethod 并取回与该 EmailId 关联的数据 WebMethod 以 JSON 格式返回一组记录:
[HttpGet]
[Route("api/Drive/GetDriveByEmail/{email}")]
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public IEnumerable<object> GetDriveByEmail(string email)
{
using (var db1 = new RigilCares2Context())
{
var results = from d in db1.Drives
where d.email == email
select d;
return results;
}
}
jquery调用的html文件如下:
<div>
<h2>Enter Your Email Address </h2>
<input type="text" id="useremail" size="5" />
<input type="button" value="Search" onclick="findByEmail();" />
<p id="drive" />
</div>
<h2>Here displays returned data from web api</h2>
<div id="divResult">
脚本如下:
function findByEmail() {
var email = $('#useremail').val();
$.ajax({
type: "POST",
dataType: "json",
url: "/api/drive" + '/' + email,
data: source,
success: function (data) {
getdrivelist();
},
error: function (x, y, z) {
var strResult = "<table><th>Error Message</th>";
strResult += "<tr><td> " + x.responseText + " </td></tr>"
strResult += "</table>";
$("#divResult").html(strResult);
}
});
}
我不知道如何定义这个调用的数据属性。谁能帮我写一个完整的jquery函数来从那个webmethod接收一组json格式的记录。
另外,在 webapiconfig 文件中添加了一个路由:
config.Routes.MapHttpRoute(
name: "actionApiByEmail",
routeTemplate: "api/{controller}/{action}/{email}",
defaults: new { action = "GetDriveByEmail", Id = RouteParameter.Optional }
);
【问题讨论】:
-
另外,我认为方法应该是GET而不是POST
标签: jquery json asp.net-web-api