Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Jsonp回调问题:输入文本未定义_Php_Jquery_Ajax_Jsonp - Fatal编程技术网

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

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

根据同源策略,我不能在ajax调用中使用常规json,所以我改用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”并触发该函数,请参见下图(对不起,黑线,隐私政策)

我使用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