0
여기에 JsonP에 관해 많은 질문이있었습니다. 실제로 모든 답변을 통해 봤습니다. 올바른 결과. 나는 몇 시간을 들여 문자 그대로 시간을왔다 갔다하면서 다른 혀를 보려고 노력했다. 어쨌든, 아래로의 덩어리로 :jQuery JSONP "undefined"응답
내 스크립트 (같은 페이지 내 양식 등)
$(function() {
function log(message) {
$("<div>").text(message).prependTo("#log");
$("#log").scrollTop(0);
}
$("#name").autocomplete({
source: function(request , response) {
$.ajax({
url: "search.php",
jsonp: "callback",
data: {
term: request.term
},
dataType: "jsonp",
type: "GET",
success: function (data, status) {
if (status=="success") {
$("#log").html(response);
}
response($.map(data, function (item) {
return {
label: item.label,
value: item.value
};
}));
}
});
},
minLength: 2,
select: function(event, ui) {
log(ui.item ?
"Selected: " + ui.item.label + ui.item.value :
"Nothing selected, input was " + this.value);
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
내 양식 (스크립트와 같은 페이지)
<form method="post" action="">
Name : <input type="text" id="name" name="name" />
</form>
<div class="ui-widget" style="margin-top:2em; font-family:Arial" id="log">
<p>Result</p>
</div>
내 search.php
if (empty($_GET['term'])) exit ;
require 'php/config/sql.inc.php';
$link = mysqli_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_NAME) or die(sqlerror(mysqli_error($link), __LINE__, __FILE__));
$req = "SELECT supplier_id, supplier_name FROM supplier WHERE supplier_name LIKE '".mysqli_real_escape_string($link, $_GET['term'])."%'";
$query = mysqli_query($link, $req);
while($row = mysqli_fetch_array($query))
{
$results[] = array('data' =>
array(
'value' => $row['supplier_id'],
'label' => $row['supplier_name']
)
);
}
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Nov 2014 05:00:00 GMT');
header('Content-type: application/json');
echo ((isset($_GET['callback'])) ? $_GET['callback'] . '(' . json_encode($results) . ')' : json_encode($results));
위젯에는 팝업이 표시되지만 내용은 표시되지 않습니다. 내가 팝업 빈 목록 상자를 선택하면, 그것은 분명에서 "undefinedundefined"추가 : 나는 JSON 보내고 파이어 폭스에 불을 지르고/웹 dev에 플러그인에 수신 확인했다
log(ui.item ?
"Selected: " + ui.item.label + ui.item.value :
"Nothing selected, input was " + this.value);
, 나는
를 얻을 수