2015-09-01 4 views
4

мой код сценария:JQuery, Ajax метод POST успеха возвращает: Undefined

$('#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' но вы передаете это как строка. Измените 'contentType: 'text'' и проверьте один раз! –

+0

Каков тип контента - тип результата, и вы подтвердили, что он возвращает то, что вы ожидаете, при обращении к нему через браузер? – JoSSte

+0

такой же результат! 'Undefinde' –

ответ

1

Вы должны вернуть JSon результат, как показано ниже:

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

также поставить ниже атрибут выше метода:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

И как вы определили формат JSON, вы должны написать:

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

Кстати, вы должны использовать Webservice здесь!

+1

Используйте 'using Newtonsoft.Json;' –

+0

Я переписал contentType: «application/json; charset = utf-8». Теперь он работает отлично! Большое спасибо! –

+1

да @GuruprasadRao – Neel

0

Я думаю, установка типа json содержания должен быть сделан таким образом:

contentType: 'application/json', 
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); 
     } 
    }); 
}); 
Смежные вопросы