从 C# ASP.NET asmx 调用 jquery ajax "POST"


$.ajax({type: "post",
            url: "http://test.com/Register",
            data: {
            "UserID": '12',
            "FirstName": 'FN1'
            },
            accept: {
                json: "application/json",
                jsonp: "application/javascript"
            },
            dataType: "jsonp",
            crossDomain: true,
            beforeSend: function (xhr) {
                xhr.withCredentials = true;
            },
            xhrFields: {
                withCredentials: true
            },
            cache: false,
            success: function (data) {
                if(data.success)
        {
            alert("success");
        }
        else
        {
            alert("failed");
        }   
            }
});

我有一个Ajax调用使用javascript。但是我正在尝试使用 HTTPWebRequest 通过 C# 进行相同的调用,但没有得到相同的结果。当我通过 C# 进行调用时,它会返回一个网页,而不是一个 json 字符串,这是不正确的。发生这种情况是因为出于某种原因的呼吁不恰当。但是 AJAX 调用将一个正确的 json 字符串返回给我。我认为这是因为 ajax 调用将数据类型指定为"jsonp"并指定它是跨域的。

我需要它在 C# 中工作的原因是,我希望在 Web 服务中进行此 C# 调用。因此,表单调用我的 Web 服务(MyWebservice.asmx),这反过来又将有问题的调用 http://test.com/Register。所以我真的不能把AJAX/Jquery写到我的Web服务中,宁愿使用C#来进行这个调用。

有什么帮助吗?

    string data = "[SOME JSON DATA]";
    byte[] bytesArray = encoding.GetBytes(data);
            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://test.com/Register");

            httpRequest.Method = "POST";
            httpRequest.ContentType = "application/x-www-form-urlencoded";
            httpRequest.ContentLength = bytesArray.Length;
            using (Stream stream = httpRequest.GetRequestStream())
            {
                stream.Write(bytesArray, 0, bytesArray.Length);
                stream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);
            // Read the response content.
            responseFromServer = reader.ReadToEnd(); //This gives an HTML page as response

Kevin B的回答有所帮助。就像他提到的JsonP帖子没有什么不同,而且是普通的旧HttpWebRequest调用。在这种情况下,这对我来说是一个"GET"。
在这里,我期待的响应是纯 json,而我调用的服务是返回 JsonP(带填充的 json),因此我这边的终点被抛出。
照顾了JsonP中的填充物,一切都很好。
希望这对某人有所帮助。

您可以尝试将内容类型设置为 @"application/json; charset=utf-8" 吗?我还建议使用 JavaScriptSerializer 来构造 JSON 字符串。

相关内容

  • 没有找到相关文章

最新更新