これは私をナットにしています。私はすでにこの2日間、多くのWebページをブラウズして解決しようとしました。JQueryオートコンプリートで動作するASPレスポンスが得られません
http://jqueryui.com/resources/demos/autocomplete/remote-jsonp.htmlのサンプルとまったく同じjquery-uiオートコンプリート機能を使用したいのですが、search.phpを呼び出す代わりにASPファイル(Microsoft IIS環境)を呼び出す必要があります。そこで、上記のHTMLファイルのローカルコピーを作成し、URLのみを調整しました。
$(function() {
function log(message) {
$("<div>").text(message).prependTo("#log");
$("#log").scrollTop(0);
}
$("#birds").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://jqueryui.com/resources/demos/autocomplete/search.php",
dataType: "jsonp",
data: {
term: request.term
},
success: function(data) {
response(data);
}
});
},
minLength: 2,
select: function(event, ui) {
log("Selected: " + ui.item.value + " aka " + ui.item.id);
}
});
});
.ui-autocomplete-loading {
background: white url("http://jqueryui.com/resources/demos/autocomplete/images/ui-anim_basic_16x16.gif") right center no-repeat;
}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Autocomplete - Remote JSONP datasource</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<body>
<div class="ui-widget">
<label for="birds">Birds: </label>
<input id="birds">
</div>
<div class="ui-widget" style="margin-top:2em; font-family:Arial">
Result:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>
</body>
- さて、私は(私のウェブサーバから元のHTMLでも使用されているファイルへのクロスドメイン、)jquery.comのsearch.phpにURLを設定するとき
- SQLからデータを読み込んでいるローカルのASPファイルで試してみると、ブラウザでファイルを直接呼び出すと有効なJSONデータが返されますが...ハードコードされたJSONデータのある
Response.Write
だけを処理するようにASPファイルを変更しました。 - 私も
Response.ContentType = "application/json"
でそれを試してみましたが、これは - のいずれかを助けなかったそれから私はもう一度だけ、再びhttps://softd4u.ch/search.phpにいくつかのハードコーディングされたJSONデータの
echo
を行い、これを呼び出すしようとしましたが、自分のsearch.phpファイルをロード成功せず
ASPファイルがソースパラメータ(通常は古い投稿)として直接入力されるインターネットでいくつかのサンプルが見つかりました。私はこれがうまくいくと思いますが、AJAX経由でファイルを呼び出すことは意味があると思います。
jquery-1.12.4.js私は少なくとも、ある時点で「parseerror」が返ってきたことを知っていましたが、どうして何をすべきか分かりません。 function ajaxHandleResponses(s, jqXHR, responses)
では、可変応答は機能していた場合には不定であったが、機能しなかった場合には内容があった。
ファイルが実際に呼び出されたことは確かですが(ログのチェックなど)、AJAX呼び出しの成功関数は決して起動しません。
私はここで何が欠けているか考えている人はいますか?従来のASPファイルの
ソース - バージョン1(DB接続などINCファイルで扱う):従来のASPファイルの
<!-- #INCLUDE FILE="includes/general.inc" -->
<%
Dim errortextInternal, rs, search, sql
Dim coma
search = Request.QueryString("term")
sql = "SELECT TOP 20 itmId, itmNo, itmDescr1, itmDescr2, itmInact, CASE WHEN itsuSupId1 IS NULL THEN '' ELSE itsuSupId1 END AS SupId1, " & _
"CASE WHEN itsuSupId2 IS NULL THEN '' ELSE itsuSupId2 END AS SupId2, " & _
"CASE WHEN itsuSupId3 IS NULL THEN '' ELSE itsuSupId3 END AS SupId3 " & _
"FROM Items LEFT JOIN ItemsSuppl ON itmId = itsuItmId WHERE "
sql = sql & " (itmNo LIKE '%" & search & "%' OR itmDescr1 LIKE '%" & search & "%' OR itmDescr2 LIKE '%" & search & "%' OR EXISTS " & _
"(SELECT * FROM ItemsSuppl AS sub WHERE sub.itsuItmId = itmId AND (itsuSupId1 LIKE '%" & search & "%' OR itsuSupId2 LIKE '%" & search & "%' OR itsuSupId3 LIKE '%" & search & "%'))) ORDER BY itmNo, itmDescr1 "
'Response.ContentType = "application/json"
Response.Write("[")
coma = ""
Success = SelectDbRecords(errortextInternal, rs, sql)
If Success Then
Do While Not rs.EOF
Response.Write(coma & "{""id"":""" & rs("itmId") & """,""label"":""" & Server.HTMLEncode(rs("itmNo") & " - " & Trim(Trim(rs("itmDescr1")) & " " & Trim(rs("itmDescr2")))) & """,""value"":""" & Server.HTMLEncode(rs("itmNo") & " - " & Trim(Trim(rs("itmDescr1")) & " " & Trim(rs("itmDescr2")))) & """}")
If coma = "" Then
coma = ","
End If
rs.MoveNext
Loop
rs.ActiveConnection.Close
Else
Response.Write("Fehler!")
End If
Response.Write("]")
%>
ソース - バージョン2(試験目的のためにハードコード応答、クエリ文字列を取得する必要はありません):
<%@LANGUAGE="VBSCRIPT"%>
<%
Response.Write("[{""id"":""Nycticorax nycticorax"",""label"":""Black-crowned Night Heron"",""value"":""Black-crowned Night Heron""},{""id"":""Ardea purpurea"",""label"":""Purple Heron"",""value"":""Purple Heron""},{""id"":""Tetrao tetrix"",""label"":""Black Grouse"",""value"":""Black Grouse""},{""id"":""Caprimulgus europaeus"",""label"":""European Nightjar"",""value"":""European Nightjar""},{""id"":""Picus viridis"",""label"":""European Green Woodpecker"",""value"":""European Green Woodpecker""},{""id"":""Saxicola rubicola"",""label"":""European Stonechat"",""value"":""European Stonechat""},{""id"":""Luscinia svecica"",""label"":""Bluethroat"",""value"":""Bluethroat""},{""id"":""Ardea cinerea"",""label"":""Grey Heron"",""value"":""Grey Heron""},{""id"":""Corvus cornix"",""label"":""Hooded Crow"",""value"":""Hooded Crow""},{""id"":""Sylvia curruca"",""label"":""Lesser Whitethroat"",""value"":""Lesser Whitethroat""},{""id"":""Pluvialis apricaria"",""label"":""European Golden Plover"",""value"":""European Golden Plover""},{""id"":""Sylvia communis"",""label"":""Common Whitethroat"",""value"":""Common Whitethroat""}]")
%>
jquery ui autosuggestを軽量化することをお勧めします。これを調整することができます。あなたが好きなら、サンプルを含む回答を投稿することができます。 –
この例では[JSONP](http://stackoverflow.com/a/3840118/692942)を使用していますが、それはあなたがしたいことですか?もしそうなら、ここでコールバックを送る方法です - [CLASSIC ASPを使ってjsonp呼び出しにデータを返す](http://stackoverflow.com/a/33498470/692942)。 JQueryがあなたのページから正しい応答を得ていない可能性があるので、 'success'ハンドラを打つことは決してありません。' fail'ハンドラや 'done'をキャッチオールとして含めようとしましたか? Ref [jqXHRオブジェクト](http://api.jquery.com/jQuery.ajax/#jqXHR)。 – Lankymart
ASPまたはPHP要素は単なるサーバーサイドスクリプトです。 jQuery UI Autocompleteは、定義された 'url'に' GET'を介して 'term 'を送ります。したがって、ASPだけでなくPHPでもうまく動作します。あなたの投稿を編集し、あなたのASPコードを含めてください。それで、スクリプトが送信されたテキストと、AJAX呼び出しに返されているデータについて知ることができます。 – Twisty