Php Jsonp回调问题:输入文本未定义
根据同源策略,我不能在ajax调用中使用常规json,所以我改用jsonp。 我有一个简单的输入字段,类名是“newCaller”。 在我的js文件中Php Jsonp回调问题:输入文本未定义,php,jquery,ajax,jsonp,Php,Jquery,Ajax,Jsonp,根据同源策略,我不能在ajax调用中使用常规json,所以我改用jsonp。 我有一个简单的输入字段,类名是“newCaller”。 在我的js文件中 $(document).on("blur", ".newCaller", function(){ var name = $(this).val(); var tel = $(this).siblings(".tel").text(); //console.log(name+t
$(document).on("blur", ".newCaller", function(){
var name = $(this).val();
var tel = $(this).siblings(".tel").text();
//console.log(name+tel);
$.ajax({
type: 'GET',
url: 'xxx.xxx.com/phpFunc.php',
data: ({ 'name' : name, 'tel' : tel }),
dataType: 'jsonp',
//I tried success instead of jsonpCallback as well
jsonpCallback: function(data){
console.log(data);
}
});
});
下面是php:
<?php
$name = $_GET['name'];
$tel = $_GET['tel'];
echo $name.$tel;
?>
触发ajax函数时,字段中的值未定义。例如,我在文本字段中键入“test”并触发该函数,请参见下图(对不起,黑线,隐私政策)
我使用success回调并返回几乎相同的内容,“xxx未定义”。
有人能告诉我怎么修吗?谢谢! ur没有在php页面phpFunc.php中将值转换为json。您需要给出
$arr=array($name=>$tel);
json_encode($arr);
因为你是用json格式做的。所以你只需要用json格式来获取数据。但是你用普通文本格式发送数据时会显示mime/type错误
要检查准确的错误,请尝试此选项
$(document).on("blur", ".newCaller", function(){
var name = $(this).val();
var tel = $(this).siblings(".tel").text();
//console.log(name+tel);
$.ajax({
type: 'GET',
url: 'xxx.xxx.com/phpFunc.php',
data: ({ 'name' : name, 'tel' : tel }),
error: function(xhr, textStatus, errorThrown) {
alert(errorThrown);
//alert(xhr.responseText);
return false;
},
dataType: 'jsonp',
//I tried success instead of jsonpCallback as well
success: function(data){
console.log(data);
}
});
})) 问题主要是服务器端,因为该脚本不足以支持
json_encode($name.$tel);
echo$\u GET['callback'](“.json_encode($name.tel)。”);
并且,您需要将
jsonCallback
更改为success
检查JSON语法。从PHP文件返回的不是JSON.ur,在PHP页面中没有将值转换为JSON;json_编码($arr);谢谢你的帮助。我在代码中添加了这两行。然后我做“echo$arr;”。我重新运行代码,但仍然得到“资源被解释为脚本,但使用MIME类型text/html传输:”。我做错了什么?在phpFunc.php页面中进行json编码,并使jsonpCallback成功!这管用!你是我的英雄!我得到了“资源被解释为脚本,但使用MIME类型text/html传输:”。这是什么意思?@nich-Ah。您必须指定内容类型
:。在echo
之前加上这个。再次感谢,我可以再问你一个问题吗。如何将$tel和$name提取回我的js。在我的php结束时,我回显了$name和$tel。我尝试了$name=$\u GET['callback'](“.json_encode($name)。”);$tel=$_GET['callback']('.json_encode($name)。');。但这行不通。您能帮我一把吗?@nich您必须将它们组合在一个JSON值中输出:JSON\u encode(数组($name,$tel))
带有数据[0]
和数据[1]
。关联数组也可以工作,但在JSON中编码为对象
s:数组(“name”=>name,“tel”=>tel)
带有数据。name
和数据。tel
。