1

JavaScript と jQuery を使用して HTML ページから asmx サービスを呼び出そうとしています。サービス HelloWorldTest.asmx のコードは次のとおりです。

[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 HelloWorldTest : System.Web.Services.WebService
{

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
    public string HelloWorld5()
    {
        string connetionString = null;
        SqlConnection connection;
        SqlDataAdapter adapter = new SqlDataAdapter();
        string sql = null;
        connetionString = System.Configuration.ConfigurationManager.ConnectionStrings["pollConString"].ToString();
        Random _rg = new Random();
        connection = new SqlConnection(connetionString);
        sql = "insert into Country (OID,country_name) values( 'Servicecalled-" + Convert.ToString(_rg.Next(0, 99999999)).PadLeft(8, '0') + "','"+System.DateTime.Now.ToString() +"')";

        connection.Open();
        adapter.InsertCommand = new SqlCommand(sql, connection);
        adapter.InsertCommand.ExecuteNonQuery();  
        return "Helloworld";
    }
}

192.168.0.124 およびポート 80 で実行されているローカル サーバーでサービスを公開しました。

クライアント呼び出しの HTML ページ コードは次のとおりです。

$.ajax({
    type: 'GET',
    url: http://192.168.0.124:80/pollservice/Services/HelloWorldTest.asmx/HelloWorld5',
    processData: true,
    data: {},               
    dataType: "json; charset=utf-8",
    responseType: "",
    success: function (data, textStatus, jqXHR) {
        processData(data, textStatus, jqXHR);
    }
});

function processData(data, textStatus, jqXHR) {                  
    alert(' data d = ' + data.d); 
}

今問題:

ローカルホストに実行しているとき、サービスから返されます。シンプルな弦です。しかし、それを LAN 内のサーバーに公開し、クライアント マシンから呼び出すと、null 出力が得られます。

しかし、興味深いことに、ログはサーバーに書き込まれます。したがって、 Helloworld5() メソッドは、 $.ajax(....) call を介して JavaScript メソッドから呼び出されます。ただし、公開されたサーバーの場合、JSON の戻りデータは空です。

なぜこれが起こっているのですか?公開された Web サイトを Asp.Net 統合モードで実行しています。

4

2 に答える 2

0

戻り値の型を JSON として宣言していますが、実際には裸の文字列を返しています。おそらく、JSON データを返す前に構築する必要があります。たとえば、次のようになります。

// ...

string responseData = "{ d : \"";
responseData += "Hello World!";
responseData += "\" }";

return responseData;
于 2012-04-05T11:47:13.640 に答える