Ich habe eine einfache Webmethode geschrieben, die ich auf der Clientseite anrufe, um zu prüfen, ob in der Datenbank ein Wert für die Textänderung vorhanden ist. Es funktioniert gut lokal, aber wenn ich es in unsere Entwicklungsumgebung verschiebe, gibt es den gesamten HTML der Seite in der Antwort zurück. Das einzige, was ich bemerkt habe, ist, dass lokal der Response.Server IIS7.5 ist, aber auf unserem Dev-Server ist es IIS6.
Hier ist mein Code:
Server-Code
[ScriptMethod]
[System.Web.Services.WebMethod]
public static bool CheckInvoiceExists(string vendorNumber, string invoiceNumber)
{
try
{
return RequestEntry.CheckInvoiceExists(vendorNumber, invoiceNumber);
}
catch (Exception exp)
{
EventLogging.LogError("Error checking if invoice exists: " + exp.Message);
return false;
}
}
-Client-Code
function CheckInvoiceExists() {
//var vendNo = $('#VendNoInputDisplay').text();
var vendNo = $('#VendorNumber').val();
var invNo = $('#InvNoInput').val();
var error;
$.ajax({
type: "POST",
aSync: false,
url: "PaymentRequest.aspx/CheckInvoiceExists",
data: JSON.stringify({
vendorNumber: vendNo,
invoiceNumber: invNo
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data.d) {
$('#ErrorList').text(GetErrorText("invoiceNumberExists"));
$('#InvNoInput').focus().select();
$('#InvNoInput').addClass('error invExists');
}
else
{
$('#InvNoInput').removeClass('error invExists');
ClearErrors();
}
},
error: function (jqXHR, textStatus, errorThrown)
{
$('#ErrorList').text(errorThrown);
}
});
}
ist die Antwort-Header von meinem lokalen Rechner:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Mon, 26 Jan 2015 18:18:36 GMT
Content-Length: 11
Von Dev:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 25586
Date: Mon, 26 Jan 2015 18:30:40 GMT
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Cache-Control: private
Wenn ich es debuggen, geht es an die Fehlerfunktion des $ Schnipsel Aufruf.
errorThrown : SyntaxError: Unexpected token <
jzXHR.responseText : [HTML of the page]
textStatus: "parserror"
Wenn ich öffnen op das CheckInvoiceExist Paket sehe ich:
Response is the current page.
The request payload is something like this {"vendorNumber":"0007000005","invoiceNumber":"Test1-12"}
@edit ich das Hinzufügen versucht, die folgende Zeile über meine Web-Methode, aber es machte keinen Unterschied
[System.ServiceModel.Web.WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json, UriTemplate = "json")]
@edit ich versuchte Pagemethods anstelle der Verwendung der $ .ajax Anrufe zu verwenden. Dann habe ich versucht, den folgenden Test:
function Test(response)
{
alert(response);
}
PageMethods.CheckInvoiceExists("0007000005","Test1-12",Test);
In der Warnmeldung ich noch einmal bekam die HTML für die Seite ...
Können Sie die 'RequestEntry.CheckInvoiceExists' Methode posten? – mattytommo
'content-length: 11' vs.s. 'content-length: 25586' ... Ich vermute, dass die v6-Seite aus irgendeinem Grund nicht korrekt ausgeführt wird. –
@mattytommo Der RequestEntery.CheckInvoiceExists ruft nur eine gespeicherte Prozedur aus der Datenbank auf und gibt dieses Ergebnis dann an die Webmethode zurück. –