2017-06-13 142 views
0

我正在嘗試使用web方法保存數據。但是它顯示了一個像找不到方法的錯誤。未找到Ajax web方法

function InsertMasterCourse() { 
    var data = {}; 
    data.Name = $('[id$=txtName]').val(); 
    $.ajax({ 
     type: 'POST', 
     url: '<%= ResolveUrl("~/MasterService.asmx/InsertMasterCourse") %>', 
     data: "{data:" + JSON.stringify(data) + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     async: true, 
     success: function (response) { 
      $('#txtName').val(''); 
     }, 
     error: function (response) { 
      alert(response.statusText); 
     } 
    }); 

    return false; 
} 

在的.asmx

[WebMethod()] 
    [ScriptMethod()] 
    public static void InsertMasterCourse(Master_CourseBLL data) 
    { 
     data.CollegeId = 1; 
     data.Status = "Active"; 
     data.CreatedOn = DateTime.Now; 
     data.UpdatedOn = DateTime.Now; 
     data.Save(true); 
    } 

在我的web.config我有加HTTP GET和POST請求如下

<location path="MasterService.asmx"> 
<system.web> 
    <webServices> 
    <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
    </protocols> 
    </webServices> 
</system.web> 

如果我檢查谷歌瀏覽器的控制檯,它顯示錯誤,如InsertMasterCourse.aspx找不到。 .aspx添加了我的Web服務方法。如何解決它。

+0

嘗試取出ScriptMethod()屬性。這將導致它只接受GET請求。 https://stackoverflow.com/questions/941484/webmethod-vs-scriptmethod。同樣,根據此示例,您可能需要ASMX類聲明中的ScriptService()屬性:https://www.aspsnippets.com/Articles/Call-Consume-Web-Service-ASMX-using-jQuery-AJAX-in- ASPNet.aspx – ADyson

+0

是的,我已經刪除ScriptMethod()。但仍然沒有找到錯誤 – Hisanth

+0

你確定你已經按照我給的第二個鏈接正確設置了一切嗎? – ADyson

回答

0

試試這個 -

function InsertMasterCourse() { 
    var data = {}; 
    data.Name = $('[id$=txtName]').val(); 
    $.ajax({ 
     type: 'POST', 
     url: '<%= ResolveUrl("~/MasterService.asmx/InsertMasterCourse") %>', 
     data: JSON.stringify(data), 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     async: true, 
     success: function (response) { 
      $('#txtName').val(''); 
     }, 
     error: function (response) { 
      alert(response.statusText); 
     } 
    }); 
    return false; 
} 

在的.asmx 使用Newtonsoft.dll在組裝參考

using System.NewtonSoft.Data; 
[WebMethod()] 
[ScriptMethod()] 
public static void InsertMasterCourse(string data) 
{ 
    Datatable dt = Newtonsoft.Json.JsonConvert.DeSerializeObject(data); 
}