Ich möchte ein Eingabefeld haben, das Börsenticker vorschlägt, wenn der Benutzer Buchstaben eingibt, wie Sie es auf Yahoo oder Google Finance sehen. Ich kann nicht einfach JSON verwenden, wenn ich CORS nicht aktiviere. In diesem Fall funktioniert es. Hier ist Code, den ich aus verschiedenen Fragen zusammengestellt habe, die ich auf Stack Overflow (here und here) gefunden habe, während ich das Problem untersucht habe, dem ich gegenüber stehe.400 fehlerhafte Anfrage bei JSONP-Anfrage an Yahoo Finance API erhalten
$("input#stocklookup").autocomplete({
source: function(request, response){
$.ajax({
url: 'http://d.yimg.com/autoc.finance.yahoo.com/autoc?query='+request.term+'®ion=US&lang=en-US',
dataType: 'jsonp',
jsonpCallback: 'YAHOO.util.ScriptNodeDataSource.callbacks'
});
YAHOO = {
util: {
ScriptNodeDataSource: {
callbacks: function(data) {
console.log(data);
}
}
}
};
}
})
Suche nach ‚a‘, werde ich einen 400-Fehler erhalten und die URL aufgeführt wird als http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=a®ion=US&lang=en-US&callback=YAHOO.util.ScriptNodeDataSource.callbacks&_=1462660878200
ich die zusätzlichen Zahlen am Ende denken, was die 400 verursacht werden kann, aber ich don Ich weiß nicht, warum es an die URL angehängt wird. Wenn Sie zu der obigen URL navigieren, werden die Ergebnisse in Ihrem Browser ordnungsgemäß angezeigt.
Ich habe auch versucht, diesen Code-Block nach dem Sehen dieser Seite in der learn jQuery Docs, aber ich bekomme auch einen Fehler 400 mit dieser.
Jegliche Hilfe, um mich in die richtige Richtung zu bringen, würde geschätzt werden. Vielen Dank.
aktualisieren
$.ajax({
url: 'http://d.yimg.com/autoc.finance.yahoo.com/autoc?query='+request.term+'®ion=US&lang=en-US',
cache: true, //<--new
dataType: 'jsonp',
jsonpCallback: 'YAHOO.util.ScriptNodeDataSource.callbacks'
});
YAHOO = {
util: {
ScriptNodeDataSource: {
callbacks: function(data) {
console.log(data);
}
}
}
};
dies für einige Anfragen funktioniert, andere aber nicht, kehren einige noch einen 400-Status.
Die zusätzlichen Sachen werden wahrscheinlich von jQuery an das Ende angehängt, nur um Browser-Caching zu verhindern. Sie können das in jQuery, einem Ajax-Aufruf, ausschalten, aber das Zwischenspeichern der JSONP-Anfrage/-Antwort könnte Sie in Unordnung bringen. – jfriend00
FYI, wenn Sie nur dies in Ihrem Browser eingeben: 'http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=a®ion=US&lang=en-US&callback=YAHOO.util.ScriptNodeDataSource.callbacks_ = 1462660878200', Sie werden eine JSONP-Antwort sehen, also glaube ich nicht, dass Ihr Fehler etwas mit dem '& _ = 1462660' Teil der URL zu tun hat. – jfriend00
Danke !! Ich lege Cache ein: true in und es hat funktioniert!Caching ist kein Problem, einzelne Börsenticker ändern sich nicht oft. – jcharch