Ich erwarte das folgende Stück Code, um den Ajax-Aufruf auszuführen. Allerdings sehe ich einen 405 Fehler, die
The requested resource does not support http method 'GET'.
sagt Wenn ich Typ verwenden = 'json' ich
The requested resource does not support http method 'JSON'.
Hier ist der relevante Teil meines Content-Skript-Code
$(document).ready(function() {
var imgSrcArr = [];
$('img').each(function(e) {
var s = this.src;
imgSrcArr.push(s);
$.ajaxSetup({cache: false});
var formData = new FormData();
formData.append("apikey", "xxxxxxxxxxxxxxx");
formData.append("isOverlayRequired", false);
formData.append("url", s);
//console.log(formData);
//console.log($.support.cors);
$.ajax({
url: "https://api.ocr.space/parse/image",
data: {apikey: "xxxxxxxxxxxxxxx", url: s},
//method: 'GET',
dataType: 'json',
async: false,
cache: false,
contentType: "application/json; charset=utf-8",
processData: false,
type: 'GET',
crossDomain: true,
xhrFields: {
// The 'xhrFields' property sets additional fields on the XMLHttpRequest.
// This can be used to set the 'withCredentials' property.
// Set the value to 'true' if you'd like to pass cookies to the server.
// If this is enabled, your server must respond with the header
// 'Access-Control-Allow-Credentials: true'.
withCredentials: true
},
headers: {
// Set any custom headers here.
// If you set any non-simple headers, your server must include these
// headers in the 'Access-Control-Allow-Headers' response header.
},
success: function(ocrParsedResult, textStatus, jqXHR) {
//Get the parsed results, exit code and error message and details
var parsedResults = ocrParsedResult["ParsedResults"];
var ocrExitCode = ocrParsedResult["OCRExitCode"];
var isErroredOnProcessing = ocrParsedResult["IsErroredOnProcessing"];
var errorMessage = ocrParsedResult["ErrorMessage"];
var errorDetails = ocrParsedResult["ErrorDetails"];
var processingTimeInMilliseconds = ocrParsedResult["ProcessingTimeInMilliseconds"];
//If we have got parsed results, then loop over the results to do something
if (parsedResults!= null) {
//Loop through the parsed results
$.each(parsedResults, function (index, value) {
var exitCode = value["FileParseExitCode"];
var parsedText = value["ParsedText"];
var errorMessage = value["ParsedTextFileName"];
var errorDetails = value["ErrorDetails"];
var textOverlay = value["TextOverlay"];
var pageText = '';
switch (+exitCode) {
case 1:
pageText = parsedText;
break;
case 0:
case -10:
case -20:
case -30:
case -99:
default:
pageText += "Error: " + errorMessage;
break;
}
console.log(parsedText);
var bazExtract = extractEmails1(parsedText);
if(bazExtract !== null) {
extractEmails2(bazExtract);
}
});
}
},
error: function(err) {
console.log(err);
}
});
});
//console.log(imgSrcArr);
});
Ein Hinweis: Andere Abschnitte des Inhaltsskriptcodes werden wie erwartet ausgeführt, aber es gibt keine Serverantwort (in der Entwicklerkonsole) an die Ajax-Anfrage.
Wenn dies ein CORS-Problem ist, gibt es eine Problemumgehung für diese Art von Fehler? Ich habe eine Handvoll Antworten auf ähnliche Fragen zu SO versucht, aber ich bin nicht in der Lage, mit solchen weiterzumachen.
Mögliches Duplikat von [jQuery .ajax() POST Request löst 405 (Method Not Allowed) auf RESTful WCF] (http://stackoverflow.com/questions/17333013/jquery-ajax-post- request-throws-405-method-not-allowed-on-restful-wcf) –
Sie können kein Objekt als 'data:' Parameter verwenden, wenn Sie 'contentType:" application/json "' und 'processData: false verwenden '. Die Option 'processData' sagt, dass das Objekt nicht in eine Zeichenkette konvertiert werden soll und' $ .ajax' nicht weiß, wie man JSON sendet. – Barmar
Sie sollten 'processData: false' nur verwenden, wenn Sie' data: formData' verwenden. Und dann sollten Sie 'contentType: 'multipart/form-data' verwenden. – Barmar