![](/img/trans.png)
[英]How to return multiple values from an Ajax request that is called in a promise chain
[英]How to return values from php called by ajax?
所以,我有一个Gridbox。 如果用户点击回车,gridbox将创建一行并加载用户插入的数据。 程序应运行一个mysql查询,其中包含用户点击回车时插入的那些数据。
现在,我有一个带有javascript
的html
页面,用于控制Gridbox动作。 当用户点击Enter时,将调用此js
:
<script type="text/javascript" >
var dbs=0;
var val=[];
function myFunction(e) {
if(e.keyCode == 13){
var newId = (new Date()).valueOf();
var value=gridbox.cells(1,0).getValue();
if(value.substring(0,5)=="JrLbl")
{
//the getfn(value) should returns the value of the mysql query
gridbox.addRow(newId,[value.substring(5,(value.indexOf(".")-4)),getfn(value)]);
}
val.push(value);
gridbox.cells(1,0).setValue('');
gridbox.editCell(1,0);
dbs=dbs+1;
}
}
function upload(){
var jsonString = JSON.stringify(val);
var jsonData = $.ajax({
type: "POST",
url: "upload.php",
data: { 'data' : jsonString},
dataType:"json",
async: false
}).responseText;
}
function getfn(str){
xmlhttp = new XMLHttpRequest();
var lblid= str.substring(str.indexOf(".")+6,str.length);
alert(lblid);
xmlhttp.open("GET","getfn.php?q="+lblid,true);
xmlhttp.send();
}
</script>
并在getfn.php中运行mysql查询:
<?php
header('Content-Type: text/html; charset=UTF-8');
require_once($_SERVER['DOCUMENT_ROOT']."globalfunctions/globalClasses.php");
require_once($_SERVER['DOCUMENT_ROOT'].'globalfunctions/GlobalParameters.php');
error_reporting ( E_ALL ^ E_DEPRECATED);
$q = intval($_GET['q']);
$db_jira = new indotekDbConnection("jira");
$sql=mysql_query("SELECT FajlNev
from indoteklabels
where ID='$q'");
$FajlNev=mysql_fetch_row($sql);
return $FajlNev[0];
$db_jira->Close();
unset($db_jira);
?>
并返回数据应该去的地方
而不是使用return $FajlNev[0];
使用$data = $FajlNev[0]; echo json_encode($data);
$data = $FajlNev[0]; echo json_encode($data);
function getfn(str){
xmlhttp = new XMLHttpRequest();
var lblid= str.substring(str.indexOf(".")+6,str.length);
//alert(lblid);
xmlhttp.open("GET","getfn.php?q="+lblid,true);
xmlhttp.responseType = 'text';
xmlhttp.onload = function () {
if (xmlhttp.readyState === xmlhttp.DONE) {
if (xmlhttp.status === 200) {
var newId = (new Date()).valueOf();
gridbox.addRow(newId,[str.substring(5,(str.indexOf(".")-4)),xmlhttp.response]);
gridbox.cells(1,0).setValue('');
gridbox.editCell(1,0);
//console.log(xmlhttp.response);
//console.log(xmlhttp.responseText);
}
}
};
xmlhttp.send();
}
您的PHP脚本正在生成一个空白页。 return
关键字在函数之外没有任何意义,只是终止脚本。 如果要处理结果,则需要将值显式echo
显到页面上。
在您的Web浏览器中导航到getfn.php?q=123
。 无论您看到什么,都将看到您的AJAX请求。 现在它将是空白页。 如果您想要JSON,请echo json_encode($the_data_i_want_back)
另外:您似乎正在使用jQuery。 如果是这样,您最好使用jQuery的内置跨浏览器AJAX功能,而不是使用原始JS XMLHttpRequest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.