次のようなメソッドがあります。
<WebMethod()> _
Public Function Search(ByVal q As String) As String
.net 2.0 から 3.5 に更新すると、これが壊れたようです。
返された値に対して data.split() を実行していますが、エラーが発生しています。返された値は単純な文字列ではなく、json 構造になっているようです。
以前の動作に戻す方法はありますか?
System.Web.Script.Services をインポートする必要があります
次に、この属性を追加してみてください。
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Xml)> _
どのように Web メソッドを呼び出していますか? JavaScriptを介して?
同様の問題がありました。2.0 での Webmethod と jquery ajax 呼び出しの基本的なセットアップでは、文字列 (js では string 型) または文字列配列 (js では object 型) を返します。3.5 では常にオブジェクトを返し、返される実際のデータは .d の下にあります。文字列または文字列配列のようなプリミティブ。
これまでの私の最善の解決策は、.d をチェックする JavaScript メソッドでした。
function getResponse(r){
if(r.d!=null){
return r.d;
}else{
return r;
}
}
移行のために 2.0 と 3.5 の両方の呼び出しをサポートする必要があり、2.0 が間もなくなくなるため、あまり多くのエネルギーを費やす必要はありません。
しかし、私はむしろより良い解決策を望んでいます。