根据同源策略,我不能使用常规json进行ajax调用,所以我使用jsonp代替。 我有一个简单的输入字段,类名是“newCaller”。 在我的js文件中
$(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”并触发该功能,请参见下图(抱歉黑线,隐私政策)
我使用成功回调并返回几乎相同的东西,“xxx未定义”。 有人能告诉我如何解决它吗?谢谢!
答案 0 :(得分:1)
问题主要是服务器端,因为该脚本不足以支持JSONP。
json_encode($name . $tel);
并包含填充(callback
):
echo $_GET['callback'] . '(' . json_encode($name . $tel) . ');';
而且,您需要将jsonCallback
更改回success
。
答案 1 :(得分:0)
你没有在php页面phpFunc.php.u中将值转换为json需要给出
$arr=array($name=>$tel);
json_encode($arr);
因为你是用json格式做的..所以你只需要以json格式获取数据。但是你以普通文本格式发送soit会显示mime / type error
检查确切的错误试试这个
$(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);
}
});
});