検索しましたが、まだ解決策が見つかりませんでした。JSONでWebサービスリファレンスにアクセスしてもWebサービスが見つかりません
Webサービス "costService.asmx"をJSONでクライアントサイドにアクセスして、asp:chartをリアルタイムで更新する場合、JSONからWebサービス "costService"が見つかりませんでした。
私はほとんどすべて試してみた:コードは動作しますが、私は自分のサービスで使用する場合、それが機能しないこと http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/
:私はこれを踏襲し を。
私は二つのプロジェクトとして私のサービスおよびサイトを分離しているからだと、ほぼ確信している
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
<add name="HttpPostLocalhost"/>
</protocols>
</webServices>
を追加しました。私のサイトには "CostServiceProxy"と呼ばれるsreviceリファレンスがあり、私のサイトのそのサーバー側を問題なく使用できます。
JSONで「CostServiceProxy」、つまりサービス参照を使用するにはどうすればよいですか?
クライアント側のコード:
$(function() {
//intercept the onchange event fire by element
//with "graphType" ID (SELECT)
$(".ddlChartType").change(function() {
//get the attribute "value" of the OPTION
//element selected and pass it as parameter
getChartImage($("option:selected", this).attr("value"));
});
});
function getChartImage(type) {
if (type < 0) return;
//create the object for passing data to Web Service
var dataPassed = new Object();
dataPassed.iType = type;
//call a Web service with jQuery
$.ajax({
type: "POST",
url: WebServiceURL + "/DrawChart",
data: $.toJSON(dataPassed),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) { var data = $.evalJSON(msg).d; $("#ChartArea").attr("src", data); },
error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); }
});
}
サーバー私が側:
CostServiceProxy.CostServiceSoapClient client = new CostServiceProxy.CostServiceSoapClient();
はサービスからmethodesやオブジェクトを使用します。
編集
マイWebServiceクラス:そのクラス内の
namespace CostService {
/// <summary>
/// Summary description for CostService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
//To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class CostService : System.Web.Services.WebService {
マイMethodeの:
[WebMethod]
public String DrawChart(Int32 iType, double CostToRender) {
私はfirebigの純タブの下を見ると、私は以下を参照してください。 編集II
私は自分のサイトでdefault.aspxコードの上にメソッドを置くことで作業するようになっています。まだいくつかの不完全さがありますが、データを含むグラフが表示されます。 ウェブサービスのURLに変更したときに動作するかどうか試してみます。
(例えば、Firebugのネットワークパネル経由で)サービスからヘッダ戻り値を確認し、 'Content-Type:text/javascript'を返すことを確認してください。 ajax呼び出し( '$ .getJSON()'が好きですが)が間違ったコンテンツタイプであれば失敗します。 –
あなたのWebサービスは '[System.Web.Script.Services.ScriptService]'デコレータで飾られていますか?通常、最初にサービスを作成するとコメントアウトされます。あなたのクラスはスクリプトから呼び出されるためにこのデコレータを必要とします。 – lsuarez
私はそのコメント部分を見落としましたが、私はそれを手作業ですでに追加しましたが、それはまだ機能しませんでした。 私は別のプロジェクトとして持っているのはどうですか? –