Jsonp回调问题:输入文本未定义

时间:2013-07-16 09:37:23

标签: php jquery ajax jsonp

根据同源策略,我不能使用常规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”并触发该功能,请参见下图(抱歉黑线,隐私政策) enter image description here

我使用成功回调并返回几乎相同的东西,“xxx未定义”。 有人能告诉我如何解决它吗?谢谢!

2 个答案:

答案 0 :(得分:1)

问题主要是服务器端,因为该脚本不足以支持JSONP

  1. 必须output valid JSON

    json_encode($name . $tel);
    
  2. 并包含填充(callback):

    echo $_GET['callback'] . '(' . json_encode($name . $tel) . ');';
    
  3. 而且,您需要将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);
 }
 });

});