2016-04-05 43 views
0

我有一個名爲soapService.aspx的c#(託管在本地主機上)創建的SOAP webservice。它有一個名爲displayClass(String id,String theDate)的方法返回 。這返回以下jsonSOAP webservice調用使用jQuery ajax發送2個參數的方法,如何在循環中捕獲響應

 

[{"lesson_id":2,"customer_id":4,"instructor_id":8,"dance_style_id":2,"hourly_rate":20,"lesson_time":"Afternoon","lesson_date":"03/12/2015","start_time":"11:22","end_time":"14:22 ","notes":"test test","payment_status":0,"status":0,"lesson_slot":null,"duration":3},{"lesson_id":3,"customer_id":4,"instructor_id":8,"dance_style_id":2,"hourly_rate":20,"lesson_time":"Afternoon","lesson_date":"03/12/2015","start_time":null,"end_time":null,"notes":null,"payment_status":0,"status":0,"lesson_slot":null,"duration":3},{"lesson_id":4,"customer_id":4,"instructor_id":8,"dance_style_id":2,"hourly_rate":20,"lesson_time":"Afternoon","lesson_date":"03/12/2015","start_time":null,"end_time":null,"notes":null,"payment_status":0,"status":0,"lesson_slot":null,"duration":3}] 

我發現這使用Web服務描述頁上給出的Web服務調用方法。

我想用ajax來捕捉響應。

到目前爲止,我寫了這個

 
$(document).ready(function() { 

    function displayClass() { 
     var instructorInputID = $('#instructorIdText').val(); 
     var instructorInputDate = $('#instructordateText').val(); 
     //send this id to web service 

     $.ajax({ 

      url: "http://localhost/soapService.asmx/displayClasses", 
      type: POST, 
      dataType:"json", 
      data:instructorInput, 
      contentType:"application/json; charset:utf-8", 

      success:function(msg){ 

       //process the msg 

      } 


     }); 

    } 

}); 

1)如何通過傳遞參數 2)如何顯示錶中的所有這些JSON數據調用Web服務的方法?請幫助

編輯:嘗試後

 
data: "{'id': '" + instructorInputID + "','theDate': '" + instructorInputDate + "'}", 

這是響應我從控制檯得到

 
XMLHttpRequest cannot load http://localhost:18324/soapService.asmx/displayClasses. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:17182' is therefore not allowed access.
EDIT Two : 
complete code : Still Error.. msg not defined 
<pre> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 

$("#findClassBtn").click(function() { 

displayClass(); 
}); 

function onSuccess(msg) { 
$.each(msg, function(i, item) { 
var tds = ""; 
$.each(item, function(i, item) { 
tds += "<td>" + item + "</td>"; 
}); 
$('#table').append("<tr>" + tds + "</tr>"); 
}); 
} 

function displayClass() { 
var instructorInputID = $('#instructorIdText').val(); 
var instructorInputDate = $('#instructordateText').val(); 
//send this id to web service 
$.ajax({ 
url: "soapService.asmx/displayClasses", 
type: "POST", 
dataType:"json", 
data: { 
'id': instructorInputID, 
'theDate': instructorInputDate 
}, 
contentType: "application/json; charset:utf-8", 
success: onSuccess(msg) 
}); 
} 

</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
</div> 
<asp:Label ID="Label1" runat="server" Text="Add Your Id"></asp:Label> 
<p> 
<asp:TextBox ID="instructorIdText" runat="server"></asp:TextBox> 
</p> 
<asp:Label ID="Label2" runat="server" Text="Add date (dd/mm/yyyy)"></asp:Label> 
<p> 
<asp:TextBox ID="instructordateText" runat="server"></asp:TextBox> 
</p> 
<asp:Button ID="findClassBtn" runat="server" OnClick="findClassBtn_Click" Text="Find Classes" /> 
<p> 
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> 
</p> 
</form> 
<table id="table"> 
</table> 
<pre> 

Error: msg is not defined. 
+0

在_data_你試圖發佈字符串,而不是json對象 – Romario

+0

我已更正我的答案。 – Romario

回答

0

$(document).ready(function() { 
 

 
    function displayClass() { 
 
     var instructorInputID = $('#instructorIdText').val(); 
 
     var instructorInputDate = $('#instructordateText').val(); 
 
     //send this id to web service 
 

 
     $.ajax({ 
 

 
      url: "http://localhost/soapService.asmx/displayClasses", 
 
      type: POST, 
 
      dataType:"json", 
 
      data: { 
 
       'id': instructorInputID, 
 
       'theDate': instructorInputDate 
 
      }, 
 
      contentType: "application/json; charset:utf-8", 
 

 
      success: function (msg) { 
 
       $.each(msg, function(i, item) { 
 
       var tds = ""; 
 
       $.each(item, function(i, item) { 
 
        tds += "<td>" + item + "</td>"; 
 
       }); 
 
       $('#table').append("<tr>" + tds + "</tr>"); 
 
       }); 
 
      } 
 
     }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="table"> 
 
</table>

+0

添加了代碼。它給內部500錯誤。 web服務ASPX的位置在本地主機上,客戶端代碼也在本地主機上。這是否導致問題? –

+0

@NurulAlamAnik這個錯誤? 'XMLHttpRequest無法加載http:// localhost:18324/soapService.asmx/displayClasses。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。 Origin'http:// localhost:17182'因此不被允許訪問' – Romario

+0

@你似乎試圖從http:// localhost:17182''向http:// localhost:18324 /發送請求。 ..'。這是跨域請求。看看這個http://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource。 – Romario

相關問題