Я чист к asp.net и веб-сервисам. Я разрабатываю приложение HTML 5, которое вызывает веб-сервис asp.net. Я опубликовал свой веб-сервис asp.net на IIS7, и он отлично работает, но когда я вызываю веб-сервис через внешний HTML 5 JQuery, он дает мне неопределенную ошибку.
Ниже приведен мой код веб-сервиса:
using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 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 Service : System.Web.Services.WebService
{
public Service () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Byeeee";
}
}
Мой код Jquery:
// JavaScript Document
$(document).ready(function() {
$.ajax({
type: "POST",
url: "http://localhost/mywebserice/Service.asmx?op=HelloWorld",
Content-Type: 'application/x-www-form-urlencoded',
dataType: "xml",
data: '{}',
success: function(){
alert("Success");
},
error: function(){
alert("Error");
}
});
});
Мой код HTML5 IS:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="jquery-1.10.2.js"></script>
<script type="text/javascript" src="newJS.js"></script>
</head>
<body>
</body>
</html>
Может ли кто-нибудь помочь мне решить эту проблему?
Неправильные атрибуты настройки jQuery ajax.
во-первых, нет такого атрибута, как Content-Type
. Используйте contentType
.
во-вторых, вы указали неправильную структуру своего URL-адреса. Структура ajax url должна быть такой:
domain/ServiceName.asmx/MethodName?anyParamters=value
вы также можете указать относительный URL-адрес, если страница, с которой вы звоните в веб-сервис и веб-сервис, относится к одному и тому же домену i, e,
~/ServiceName.asmx/MethodName?anyParamters=value
измените вашу функцию ajax на это:
$.ajax({
type: "POST",
url: "http://localhost/mywebserice/Service.asmx/HelloWorld",
contentType: 'application/x-www-form-urlencoded',
dataType: "xml",
data: {},
success: function (msg) {
alert($(msg).text());
//console.log($(msg).text());
},
error: function(xhr, status, error){
console.log("Error");
}
});
вы можете прочитать обо всех возможных атрибутах jQuery ajax здесь. Попробуй
url
в jQuery ajax следующим образом:http://localhost/mywebserice/Service.asmx/HelloWorld