2016-08-15 96 views
1

我有一个简单的HTML页面,我直接打开,文件://abc.html使用JSONP使用Ajax HTML

它具有以下代码

$.ajax({ 
     url: "http://localhost:8080/ajax_info.php", 
     dataType: "jsonp", 
     jsonp: 'jsoncallback', 
     success: function(data) { 
      alert(data); 
     } 
    }); 

ajax_info.php有回音 '你好'只有在它。

在每个重装Chrome的网络选项卡显示的请求,以

http://localhost:8080/ajax_info.php?jsoncallback=jQuery1111016803214247142373_1471278920224&_=1471278920236 

制成,为hello收到响应,但我不明白的警告框。

当我执行页面时,它什么也没有显示(没有提示框),我应该在hello中获得警觉,我做错了什么?

+0

_“ajax_info.php只有在它回声‘你好’。” _ - 那不是如何JSONP工程.. –

+0

@JasonP什么它应该有,我只是做的PoC –

回答

0

尝试增加这个功能对你的:

function jsoncallback(json){ 
alert(json); 
} 

编辑:当你想使用JSONP服务器应该在功能呼应PARAMS你想:

做这在服务器

echo 'jsoncallback("hello!")'; 

or this:

echo 'jsoncallback('. json_encode($some_data) .')'; 

当然“jsoncallback”的是用户函数的名称,任何用户可能想改变,所以你必须做正确的方式:

echo $user_sent_me_this_name . '(' . json_encode($some_data) . ')'; 
+0

我已经试过了,它说未捕获ReferenceError:你好没有定义 –

+0

我已经添加解释什么服务器应该做的。基本上服务器应该回显_working javascript_ –

+0

你真的真的需要jsonP吗?它仅适用于跨域的Ajax请求。 –

0
success: function(data) {alert(data);} 

此代码是好的,请确保您的Ajax连接正在工作。 知道你可以使用error:参数。

$.ajax({ 
     url: "http://localhost:8080/ajax_info.php", 
     dataType: "jsonp", 
     jsonp: 'jsoncallback', 
     success: function(data) { 
      alert(data); 
     }, 
     error: function() { 
      $('#info').html('<p>An error has occurred</p>'); 
      } 
    }); 
+0

实际上,我需要编辑php作为第一个提到的答案,它应该返回FUNCTIONNAME('DATA_I_WANT_TO_RETURN); –

+0

你解决了你的问题吗? –