0

我的方法有问题,json它给了我这个错误。这是我的代码:

function test() {
            $.ajax({
                type: "POST",
                url: 'zz.aspx/GetDate',
                //processData: false,
                data: "{'keyWord':" + keyWord + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {   
                    if (msg.length > 0) {


                        $("#suggestions").fadeIn();
                        $("#suggestions").html(msg);

                        setTimeout('ToogleAct();', 500);
                    } else {
                        $("#suggestions").fadeOut();
                        $('#actions').css('display', 'none');
                        alert('ERROR [sasa ]');
                    }
                },
                error: function (xhr, status, error) {
                    alert('ERROR [ ' + error + ' ]');
                }
            });

        } else {
            $("#suggestions").fadeOut();
        }
    }

这是c#代码:

 public static string GetDate(string keyWord)
    {

        string S = "";
        DataTable dt = DataLayer.Maghale.Search(keyWord).Tables[0];
        S += "<div id=\"SGR\" style=\"height: auto;\"><div id=\"APL\">";
        foreach (DataRow dr in dt.Rows)
        {
            S += "<a href=\"" + dr["Alias"].ToString() + "\">" +
                "<div class=\"imageholder\"> " +
                "<img src=\"~/MakeThumbnail.aspx?file=~/Images/CustomImages/Seo-S.png&i=80&j=80\")\"></div>" +
                "<span class=\"SGSH1\">" + dr["Title"].ToString() + "</span>" +
                "<span class=\"SGSH2\"> " + dr["Description"].ToString().Substring(0, 15) + " ... </span></a>";
        }
        S += "</div></div>";
        return S;
    }

当我使用 type:Post; 那么我的 msg.Length>0 返回 false 为什么会发生这种情况,我应该怎么做才能返回我的字符串并将其放入 html 中?

当我使用 type=GET 时:给我未定义的错误,这是 Post 和 Get 之间的区别以及我应该何时使用 get 或 post 请告诉我,谢谢

4

2 回答 2

0

您需要正确设置您的 ajax 调用。您正在将一个字符串传递给data有效的 ajax,但我想您想在服务器端使用“keyWord”变量访问提交的值。ajax的变化data如下:

data: { keyWord: $.trim($("#txtSearchBox").val()) },

另外,更改setTimeout('ToogleAct();', 500);setTimeout(ToogleAct, 500);

于 2013-10-06T10:36:41.703 回答
0

如果您查看此链接,您将获得postv get http://www.cs.tut.fi/~jkorpela/forms/methods.html的完整描述

HTML 规范在技术上定义了“GET”和“POST”之间的区别,前者意味着表单数据将被(通过浏览器)编码为 URL,而后者意味着表单数据将出现在消息正文中。但是规范也给出了使用建议,即当表单处理是“幂等的”时,应该使用“GET”方法,并且仅限于这些情况。简单来说,我们可以说“GET”基本上只是用于获取(检索)数据,而“POST”可能涉及任何事情,例如存储或更新数据、订购产品或发送电子邮件。

在您成功后,检查msg.d、使用 chrome 开发人员工具或 firebug 来检查您收到的回复。

我建议的另一件事是StringBuilder在使用字符串连接时使用类。因此,string +=您将拥有StringBuilder.Append哪个更有效,而不是 。

于 2013-10-06T10:12:54.997 回答