Javascript 没有收到对PHP的AJAX调用的响应(使用JSON数据)
我在服务器上运行一个PHP,我通过Javascript 没有收到对PHP的AJAX调用的响应(使用JSON数据),javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我在服务器上运行一个PHP,我通过jQuery.Ajax()调用它,但它总是返回到它的错误部分 如果我直接从浏览器调用PHP地址,我会得到所需的响应,它只会在jQuery调用中中断 PHP(简单地说)是这样的: 在javascript方面,我这样调用它: <html> <head> <script type="text/javascript"> function loadcall(data) {
jQuery.Ajax()
调用它,但它总是返回到它的错误部分
如果我直接从浏览器调用PHP地址,我会得到所需的响应,它只会在jQuery调用中中断
PHP(简单地说)是这样的:
在javascript方面,我这样调用它:
<html>
<head>
<script type="text/javascript">
function loadcall(data)
{
jQuery.ajax({
async:false,
method:'POST',
crossDomain:true,
dataType:'jsonp',
url:'http://example.com/ajax.php?getcodenode',
data:{'arg':data},
success:function(result){
var ret=JSON.parse(result);
var el=jQuery('#abc');
for(en in ret.itens)
{
el.Append('<div id="item_'+en.id+'">'+en.lb+', '+en.ds+'</div>');
}
},
error:function(result){alert('Error (loadcall)');}
});
}
</script>
</head>
<body>
<div id="abc"></div>
</body>
</html>
函数装入调用(数据)
{
jQuery.ajax({
async:false,
方法:'POST',
跨域:是的,
数据类型:'jsonp',
网址:'http://example.com/ajax.php?getcodenode',
数据:{'arg':数据},
成功:功能(结果){
var ret=JSON.parse(结果);
var el=jQuery(“#abc”);
适用于(英文版)
{
el.Append(''+en.lb+'',''+en.ds+'');
}
},
错误:函数(结果){alert('error(loadcall);}
});
}
您需要调用loadcall(数据)
函数装入调用(数据)
{
jQuery.ajax({
async:false,
方法:'POST',
跨域:是的,
数据类型:'jsonp',
网址:'http://example.com/ajax.php?getcodenode',
数据:{'arg':数据},
成功:功能(结果){
var ret=JSON.parse(结果);
var el=jQuery(“#abc”);
适用于(英文版)
{
el.Append(''+en.lb+'',''+en.ds+'');
}
},
错误:函数(结果){alert('error(loadcall);}
});
}
loadcall('somethingData')
如何从PHP读取JSON对象并在浏览器中显示?
您的代码上有许多注释:
- 当您已经从服务器获取json返回时;你不需要解析它。它已经是一个json对象了
- 您可以设置async:true以获取承诺数据
- 在对象中循环的方式需要正确执行。请参见图像“如何正确获取对象路径”李>
- 您可以使用$token代替jQuery token;除非你故意需要
- 我不确定这是否是最好的办法;但它给出了你在问题中解释的所需结果
<script type="text/javascript">
loadcall("test");
// as pointed you need to call the function so it runs
function loadcall(data) {
$.ajax({
async: true,
method: 'POST',
crossDomain: true,
dataType: 'json', //your data type should be JSON not JSONP
url: 'page.php?getcodenode',
data: {
'arg': data
},
success: function(result) {
console.log(result);
// see attached image how to get the path for object
var ret = result;
var el = $('#abc');
for (en in ret.itens) {
console.log(ret.itens[en].ds);
el.append('<div id="item_' + ret.itens[en].id +
'">' + ret.itens[en].lb + ', ' + ret.itens[en].ds + '</div>');
}
},
error: function(result) {
console.log(result);
}
});
}
</script>
加载调用(“测试”);
//如前所述,您需要调用该函数以使其运行
函数装入调用(数据){
$.ajax({
async:true,
方法:“POST”,
跨域:是的,
dataType:'json',//您的数据类型应该是json而不是JSONP
url:'page.php?getcodenode',
数据:{
“arg”:数据
},
成功:功能(结果){
控制台日志(结果);
//请参见附件图像“如何获取对象的路径”
var-ret=结果;
var el=$('abc');
适用于(英文版){
log(ret.itens[en].ds);
el.append('+ret.itens[en].lb+','+ret.itens[en].ds+'');
}
},
错误:函数(结果){
控制台日志(结果);
}
});
}
对象路径
错误处理程序有三个参数。使用它们…jsonp是调用脚本javascript所在的其他域。您在控制台中遇到了什么具体错误?通常情况下,这是一个
数据类型不匹配
,您试图获取jsonp,而服务器返回的数据是JSON,这会在jQuery例程中触发错误,另外,您在成功时解析返回数据的方式是错误的…请参阅我的答案。“…我通过jQuery.Ajax()调用它,但它总是返回到它的错误部分。”因此调用该函数(在问题中未显示的任何位置…)感谢返回-无法使用“$”,因为某些原因它无法工作,并且它在另一个站点下运行,所以我不会花时间去检查这个-我知道,buit是其他人的问题:)我宁愿保持async false,如果它不影响结果,那么它只能在返回后工作。对于我所做的其他事情,它正在发挥作用now@SammuelMiranda,在这种特殊情况下,如果要解决此问题,则意味着设置为true以保持运行其余代码,直到结果就绪为止,有时您可能需要它。很高兴你能成功,问候你。
<html>
<head>
<script type="text/javascript">
function loadcall(data)
{
jQuery.ajax({
async:false,
method:'POST',
crossDomain:true,
dataType:'jsonp',
url:'http://example.com/ajax.php?getcodenode',
data:{'arg':data},
success:function(result){
var ret=JSON.parse(result);
var el=jQuery('#abc');
for(en in ret.itens)
{
el.Append('<div id="item_'+en.id+'">'+en.lb+', '+en.ds+'</div>');
}
},
error:function(result){alert('Error (loadcall)');}
});
}
loadcall('somethingData')
</script>
</head>
<body>
<div id="abc"></div>
</body>
</html>
<script type="text/javascript">
loadcall("test");
// as pointed you need to call the function so it runs
function loadcall(data) {
$.ajax({
async: true,
method: 'POST',
crossDomain: true,
dataType: 'json', //your data type should be JSON not JSONP
url: 'page.php?getcodenode',
data: {
'arg': data
},
success: function(result) {
console.log(result);
// see attached image how to get the path for object
var ret = result;
var el = $('#abc');
for (en in ret.itens) {
console.log(ret.itens[en].ds);
el.append('<div id="item_' + ret.itens[en].id +
'">' + ret.itens[en].lb + ', ' + ret.itens[en].ds + '</div>');
}
},
error: function(result) {
console.log(result);
}
});
}
</script>