Php Ajax无法工作
我在一个json对象中从Yahoo finance中提取股票符号,当用户开始在搜索框中键入公司名称或符号时,我尝试将它们显示为下拉菜单 Typeahead不是搜索框中的下拉菜单。这是我目前掌握的代码 例如,如果我在suggest.php中转储$data或$result,同时用goog替换{$\u POST['symbol']},我将得到一个数组。因此,我认为要么suggest.php echo没有返回任何内容,要么suggest.php没有从quote.js文件调用 如果我删除suggest.php中的If语句并用goog替换{$\u POST['symbol']},然后转到Php Ajax无法工作,php,jquery,ajax,twitter-bootstrap,web-deployment,Php,Jquery,Ajax,Twitter Bootstrap,Web Deployment,我在一个json对象中从Yahoo finance中提取股票符号,当用户开始在搜索框中键入公司名称或符号时,我尝试将它们显示为下拉菜单 Typeahead不是搜索框中的下拉菜单。这是我目前掌握的代码 例如,如果我在suggest.php中转储$data或$result,同时用goog替换{$\u POST['symbol']},我将得到一个数组。因此,我认为要么suggest.php echo没有返回任何内容,要么suggest.php没有从quote.js文件调用 如果我删除suggest.p
http://localhost/suggest.php
不应该回显打印内容吗
感谢您的帮助。我是网络开发新手,正在努力学习
quote.js
$(document).ready(function() {
// create autocomplete
$('#form-quote input[name=symbol]').typeahead({
// load autocomplete data from suggest.php
source: function(query, callback) {
$.ajax({
url: '../suggest.php',
type: 'POST',
dataType: 'json',
data: {
symbol: query
},
success: function(response) {
callback(response.symbols);
}
});
}
});
// load data via ajax when form is submitted
$('#form-quote').on('click', function() {
// determine symbol
var symbol = $('#form-quote input[name=symbol]').val();
// send request to quote.php
$.ajax({
url: 'quote.php',
type: 'POST',
data: {
symbol: symbol
},
success: function(response) {
$('#price').text(response);
}
});
return false;
});
});
quote.php
<?php
//configuration
require("../includes/config.php");
//if form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
$stock = lookup(strtoupper($_POST["symbol"]));
if(empty($_POST["symbol"])){
//echo "You must enter a stock symbol";
}else if($_POST["symbol"]){
$price = number_format($stock['price'], 2);
echo "A share of {$stock['name']} costs $$price";
}
}
else{
// render portfolio
render("stock_search.php", ["title" => "Get Quote"]);
}
?>
我看到一些打字错误。如果这是一个测试服务器,您可能希望在php中启用错误 无论如何,根据这段代码:
// load suggestion data
$data = @file_get_contents("http://d.yimg.com/aq/autoc?query=GOOG®ion=US&lang=en-US&callback=YAHOO.util.ScriptNodeDataSource.callbacks");
// parse yahoo data into a list of symbols
$patt = array("/^YAHOO\.util\.ScriptNodeDataSource\.callbacks\(/","/\)$/");
$repl = array("","");
$json = json_decode(preg_replace($patt,$repl,$data));
foreach ($json->ResultSet->Result as $stock)
$result[] = $stock;
echo json_encode(array('symbols' => $result));
我得到以下输出:
{"symbols":[{"symbol":"GOOG","name":"Google Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"^UVSPY","name":"NASDAQ OMX Alpha GOOG vs. SPY","exch":"NAS","type":"I","exchDisp":"NASDAQ","typeDisp":"Index"},{"symbol":"GOOG-U.TI","name":"GOOGLE-A","exch":"TLO","type":"S","exchDisp":"TLX Exchange ","typeDisp":"Equity"},{"symbol":"GOOG11BF.SA","name":"GOOGLE -DRN MB","exch":"SAO","type":"S","exchDisp":"Sao Paolo","typeDisp":"Equity"},{"symbol":"GOOG.MX","name":"Google Inc.","exch":"MEX","type":"S","exchDisp":"Mexico","typeDisp":"Equity"},{"symbol":"GOOF.EX","name":"GOOGLE-A","exch":"EUX","type":"S","exchDisp":"EUREX Futures and Options Exchange ","typeDisp":"Equity"},{"symbol":"GGQ1.F","name":"GOOGLE-A","exch":"FRA","type":"S","exchDisp":"Frankfurt","typeDisp":"Equity"},{"symbol":"GGQ1.MU","name":"GOOGLE-A","exch":"MUN","type":"S","exchDisp":"Munich","typeDisp":"Equity"},{"symbol":"GGQ1.HA","name":"GOOGLE-A","exch":"HAN","type":"S","exchDisp":"Hanover","typeDisp":"Equity"},{"symbol":"GGQ1.DE","name":"GOOGLE-A","exch":"GER","type":"S","exchDisp":"XETRA","typeDisp":"Equity"}]}
纠正数据获取和解析后,如果您使用的是Bootstrap 2.1+,您应该能够实现对PHP代理的ajax调用,如中所述。(如果链接没有跳转到“Bootstrap 2.1”,请在页面中搜索。)我看到一些打字错误。如果这是一个测试服务器,您可能希望在php中启用错误 无论如何,根据这段代码:
// load suggestion data
$data = @file_get_contents("http://d.yimg.com/aq/autoc?query=GOOG®ion=US&lang=en-US&callback=YAHOO.util.ScriptNodeDataSource.callbacks");
// parse yahoo data into a list of symbols
$patt = array("/^YAHOO\.util\.ScriptNodeDataSource\.callbacks\(/","/\)$/");
$repl = array("","");
$json = json_decode(preg_replace($patt,$repl,$data));
foreach ($json->ResultSet->Result as $stock)
$result[] = $stock;
echo json_encode(array('symbols' => $result));
我得到以下输出:
{"symbols":[{"symbol":"GOOG","name":"Google Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"^UVSPY","name":"NASDAQ OMX Alpha GOOG vs. SPY","exch":"NAS","type":"I","exchDisp":"NASDAQ","typeDisp":"Index"},{"symbol":"GOOG-U.TI","name":"GOOGLE-A","exch":"TLO","type":"S","exchDisp":"TLX Exchange ","typeDisp":"Equity"},{"symbol":"GOOG11BF.SA","name":"GOOGLE -DRN MB","exch":"SAO","type":"S","exchDisp":"Sao Paolo","typeDisp":"Equity"},{"symbol":"GOOG.MX","name":"Google Inc.","exch":"MEX","type":"S","exchDisp":"Mexico","typeDisp":"Equity"},{"symbol":"GOOF.EX","name":"GOOGLE-A","exch":"EUX","type":"S","exchDisp":"EUREX Futures and Options Exchange ","typeDisp":"Equity"},{"symbol":"GGQ1.F","name":"GOOGLE-A","exch":"FRA","type":"S","exchDisp":"Frankfurt","typeDisp":"Equity"},{"symbol":"GGQ1.MU","name":"GOOGLE-A","exch":"MUN","type":"S","exchDisp":"Munich","typeDisp":"Equity"},{"symbol":"GGQ1.HA","name":"GOOGLE-A","exch":"HAN","type":"S","exchDisp":"Hanover","typeDisp":"Equity"},{"symbol":"GGQ1.DE","name":"GOOGLE-A","exch":"GER","type":"S","exchDisp":"XETRA","typeDisp":"Equity"}]}
纠正数据获取和解析后,如果您使用的是Bootstrap 2.1+,您应该能够实现对PHP代理的ajax调用,如中所述。(如果链接没有跳转到“Bootstrap 2.1”,请在页面中搜索。)谢谢您的回复。我确实得到了和你一样的结果。有没有办法检查ajax功能是否正常工作?我仍然无法获取下拉菜单。是否更新?你说我修复了PHP输出,但你没有接受我的答案。您是否根据我链接的答案更新了ajax调用?我通过您的更改获得了结果,但当我尝试从ajax获得结果时,仍然无法获得下拉菜单。感谢您的回复。我确实得到了和你一样的结果。有没有办法检查ajax功能是否正常工作?我仍然无法获取下拉菜单。是否更新?你说我修复了PHP输出,但你没有接受我的答案。您是否根据我链接的答案更新了ajax调用?我通过您的更改获得了结果,但当我尝试从ajax获得结果时,仍然无法获得下拉菜单。