0

根据同源策略,我不能使用常规 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 函数时,字段中的值未定义。例如,我在文本字段中输入“测试”并触发该功能,请参见下图(对不起,黑线,隐私政策) 在此处输入图像描述

我使用成功回调并返回几乎相同的内容,“xxx 未定义”。有人可以告诉我如何修复它吗?感谢!

4

2 回答 2

1

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

  1. 它必须输出有效的 JSON

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

    echo $_GET['callback'] . '(' . json_encode($name . $tel) . ');';
    

而且,你会想要改jsonCallbacksuccess.

于 2013-07-16T09:54:32.723 回答
0

您没有在 php 页面 phpFunc.php.u 中将值转换为 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);
 }
 });

});

于 2013-07-16T09:46:10.767 回答