我一直在寻找答案,但仍然没有找到任何有帮助的东西。我正在开发一个phoneGap + jqm应用程序,在开发的时候,我已经通过chrome和我的asp.net项目的本地实例(在localhost和visual studio developmentserver上运行)进行了测试。我甚至在服务器端将js调用作为JSONP处理。一切正常,因为我正在使用locahost,但在将asp项目发布到服务器后,我没有得到ajax调用的响应。我做错了什么?
这是jqm init的样子:
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
$.mobile.phonegapNavigationEnabled = true;
$.mobile.linkBindingEnabled = true;
$.mobile.ajaxEnabled = true;
$.ajax({
async: isAsync,
crossDomain: true,
timeout: 5000,
url: "https://pathToService/MobileService.asmx/" + methodName,
data: dataAry,
dataType: "jsonp",
beforeSend: function () {
// This callback function will trigger before data is sent
$.mobile.loading('show', { theme: "a", text: "Loading...", textonly: false, textVisible: false }); // This will show AJAX spinner
},
complete: function () {
// This callback function will trigger on data sent/received complete
$.mobile.loading('hide'); // This will hide AJAX spinner
},
success: function (succResult) {
callback(succResult)
},
error: function (errorResult) {
app.showAlert("Es ist ein Fehler bei dem Verbindungsaufbau zum Server aufgetreten. Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmal.", "Fehler")
}
})
我也尝试过没有https但同样的事情。我还通过浏览器和SOAP客户端检查了服务并得到了有效的响应。
这是服务器端方法之一:
<WebMethod> _
<ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat> _
Public Sub IsSystemAvailable(callback As String)
CompleteRequest(callback, True)
End Sub
Private Sub CompleteRequest(callback As String, objectToSerialize As Object)
Dim sb As New StringBuilder()
Dim js As New JavaScriptSerializer()
sb.Append(callback & "(")
sb.Append(js.Serialize(objectToSerialize))
sb.Append(");")
Context.Response.Clear()
Context.Response.ContentType = "application/json"
Context.Response.Write(sb.ToString())
Context.Response.[End]()
End Sub
来自ajax处理程序没有真正的错误,只是控制台记录以下输出:
GET https://pathToWebservice/MobileService.asmx/Log…ino&password_hash= some hash jquery-1.10.2.min.js:6
send jquery-1.10.2.min.js:6
x.extend.ajax index.js:266
doRequestWith index.js:242
CheckLoginSynchroniously index.js:151
app.loginToHQ index.html:34
onclick
任何想法??
答案 0 :(得分:1)
您是否在服务器端启用了跨域?
Access-Control-Allow-Origin:* 访问控制请求方法:PUT,GET,POST
http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api