使用 JQuery 调用 WebMethod [英] Using JQuery to call a WebMethod

查看:33
本文介绍了使用 JQuery 调用 WebMethod的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法通过 JQuery 调用进入我的 Search WebMethod.也许有人可以帮助我指明正确的方向.

I am having trouble getting inside my Search WebMethod from my JQuery call. Maybe someone could help to point me in the right direction.

我还将所有内容打包成一个 zip 文件,以防有人想仔细查看.

I also packed up everything into a zip file incase someone wants to check it out for a closer look.

http://www.filedropper.com/jsonexample

谢谢瑞恩

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>JSON Example</title>
    <script type="text/javascript" language="JavaScript" src="jquery-1.3.1.min.js"></script>

<script type="text/javascript" language="javascript">

function Search() {
    var search = $("#searchbox").val();
    var options = {
        type: "POST",
        url: "Default.aspx/Search",
        data: "{text:" + search + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert('Success!');
        }
    };
    $.ajax(options);
}
</script>

</head>
<body>
    <form id="form1" runat="server">
        <input type="text" id="searchbox" size="40" />
        <a href="#" onclick="Search()" id="goSearch">Search</a>
        <br />        
        <div id="Load" />
    </form>
</body>
</html>

这里是 default.aspx 的代码

And here is the code behind for the default.aspx

 Imports System.Data
    Imports System.Web.Services
    Imports System.Web.Script.Serialization

    Partial Class _Default
        Inherits System.Web.UI.Page

        <WebMethod()> _
        Public Shared Function Search(ByVal text As String) As IEnumerable
            Return "test"
        End Function

    End Class

推荐答案

要解决这样的问题,首先要在 Firebug 中观看.

To solve a problem like this, the first thing to do is watch it in Firebug.

如果您单击搜索"链接并在 Firebug 的控制台中查看 POST 请求/响应,您会看到它抛出了 500 服务器错误:无效的 JSON 原语.

If you click the "Search" link and watch the POST request/response in Firebug's console, you'll see it's throwing a 500 server error: Invalid JSON Primitive.

这是因为数据"JSON 文本中的键/值标识符没有被引用.第 17 行应该是:

The reason for that is because the key/value identifiers in your "data" JSON literal aren't quoted. Line 17 should be:

data: "{'text':'" + search + "'}",

然后,一切都会按预期进行.

Then, all will work as expected.

注意:建议的数据 { test: search } 不起作用.如果您为 jQuery 提供实际的 JSON 文字而不是字符串,它会将其转换为 test=search 和 POST 的键/值对,而不是 JSON.这也会导致 ASP.NET AJAX ScriptService 或 PageMethod 抛出 Invalid JSON Primitive 错误.

Note: The suggested data { test: search } will not work. If you provide jQuery with an actual JSON literal instead of a string, it will convert that into a key/value pair of test=search and POST that instead of the JSON. That will also cause an ASP.NET AJAX ScriptService or PageMethod to throw the Invalid JSON Primitive error.

这篇关于使用 JQuery 调用 WebMethod的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆