我正在使用jQuery調用Web服務,並且我有一個很奇怪的問題,那就是我整個上午都遇到了問題。當我在我的開發環境中調用Web服務時,一切正常。投入生產時,我從Firebug獲得「301永久移動38毫秒」。Web服務在生產環境中返回「在生產環境中永久移動301錯誤
我有我的劇本是這樣的:
var data = '{"product":"' + productName + '", "from":"' + from + '", "question":"' + question + '", "phone":"' + phone + '", "type":"' + typeOfMail + '"}';
$.ajax({
type: "POST",
datatype: "json",
data: data,
url: '<%= Page.ResolveUrl("~/Services/MailService.asmx/SendProductEmail") %>',
contentType: "application/json; charset=utf-8",
success: function (data) {
resetContactControls();
$('#<%=AskQuestionProductBtn.ClientID %>').hide();
},
failure: function (data) {
}
});
這編譯成以下URL生產:
url: '/Services/MailService.asmx/SendProductEmail'
在我的生產環境,使用Firebug我可以看到它試圖達到我的網址:
http://www.hcemballering.dk/Services/MailService.asmx/SendProductEmail
當手動嘗試打開此URL時,我打了我的web服務。我也嘗試更改網址,以便使用普通的../Services/MailService.asmx/SendProductEmail。
我也試着看看我的安全設置,它應該工作(所有進程都有權訪問)。我甚至試圖給用戶「每個人」完全訪問「服務」,所以它不應該是問題。
這是我的web服務類:
[ScriptService]
public class MailService : System.Web.Services.WebService {
ILog logger = LogManager.GetLogger(typeof(MailService));
[WebMethod]
public bool SendProductEmail(string product, string from, string question, string phone, string type)
{
try
{
StringBuilder content = new StringBuilder();
content.AppendLine(
string.Format(
"Produkt:<br/>{0}<br/><br/>Fra email:<br/>{1}<br/><br/>Telefon:<br/>{2}<br/><br/>Type af henvendelse:<br/>{3}<br/><br/>Spørgsmål:<br/>{4}",
product, from, phone, type, question));
var module = new MailModule(content.ToString(), "Kontakt om HC produkt: " + product);
module.SendMail();
}
catch (Exception exp)
{
throw new Exception("Mailen blev desværre ikke sendt, da der skete en fejl");
}
return true;
}
}
任何想法?
等一下。在另一個說明中,你是否自串聯一個JSONified字符串?你可以把它作爲一個對象字面值並將它傳遞給jQuery,並且jQuery將負責將它字符串化...... *正確*。 (我會建議不要JSON化自己。)如果想要理解和/或弄清楚它爲什麼不起作用,那麼使它更加理智(如在小提琴中)。 – 2013-03-23 13:52:01