jQuery,ajax POST方法成功返回:未定义

4

我的脚本代码:

$('#btnSave').click(function() {
    var pageUrl = '<%= ResolveUrl("~/TestPage.aspx/SystemEdit")%>';
    var ip = $('#editIP').text();
    var loc = $('#txtBay').val();
    var team = $('#txtTeam').val();
    var port = $('#txtPort').val();
    var xcel = "", office = "", moni = "";                                   
    var parameter={ "ip": ip, "loc": loc, "team": team, "port": port, "excel": xcel, "office": office, "monitor": moni}

    $.ajax({
        type: 'POST',
        url: pageUrl,
        data: JSON.stringify(parameter),
        contentType: 'json',
        success: function(data) {
            alert(data);
        },
        error: function(data,success,error) {
            alert("Error:" +error);
        }
    });           
});

我的C#代码后台如下:

[WebMethod]
public static string SystemEdit(string ip, string loc,string team, string port, string excel,string office, string monitor)
{
    return "The Current Time is: "+ DateTime.Now.ToString();
}

我的页面名称是:TestPage.aspx

当我点击保存按钮时,出现“undefined”错误。我无法从后端C#代码中获取当前时间。


1
contentType: 'json' 指定了您期望返回结果为 json,但您却将其作为 string 传递。尝试更改 contentType: 'text' 并检查一下! - Guruprasad J Rao
结果的内容类型是什么?在通过浏览器访问时,您是否已验证它返回了您期望的内容? - JoSSte
3个回答

1
你需要返回以下格式的JSON结果:

return JsonConvert.SerializeObject("The Current Time is: "+ DateTime.Now.ToString());

同时将以下属性放在方法之上:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

根据您指定的JSON格式,您应该编写:

 contentType: "application/json; charset=utf-8",

顺便提一下,在这里你应该使用一个Web服务!

1
使用 using Newtonsoft.Json; - Guruprasad J Rao
我重写了contentType: "application/json; charset=utf-8"。现在它正常工作了!非常感谢! - Sarath Kumar

0
如果您正在使用vs2013,请确保在route.config中禁用以下行以使事情正常运作。
 'settings.AutoRedirectMode = RedirectMode.Permanent

我的VB代码后台:

  <WebMethod()>


       Public Shared Function GetReport(ByVal Data As String) As String
          Try

                Return "Hello" + Data

            Catch ex As Exception

                Return "Failed"
      End Try
End Function

Js脚本:

$('#btnSave').click(function () {
  var char = $(this).text();

 var SendData = {};
  $.ajax({
      type: "POST",
      url: "TEST.aspx/GetReport",
      data: JSON.stringify(SendData),
      data: "{ 'Data': '" + char + "'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (data) {
          $('#lbl_test').text(data.d);
      },
      error: function (data, success, error) {
          alert("Error:" + error);
      }
  });
 });

0

我猜设置json内容类型应该是这样的:

contentType: 'application/json',

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接