Foxtable(狐表)用户栏目专家坐堂 → jsonp跨域取数问题


  共有4603人关注过本帖树形打印复制链接

主题:jsonp跨域取数问题

帅哥哟,离线,有人找我吗?
tianhao0817
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:122 积分:1290 威望:0 精华:0 注册:2020/5/16 10:30:00
jsonp跨域取数问题  发帖心情 Post By:2022/4/14 13:23:00 [只看该作者]

麻烦老师看一下,如果用PHP方式,那么下面两段HTML代码都可以获取到结果,可是把PHP写成狐表代码后
第一段用JQUERY的就执行不出来结果,狐表端的代码要怎么改进呢

原服务端PHP源码是

<?php header('Content-type: application/json');
//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
//json数据
$json_data = '["customername1","customername2"]';
//输出jsonp格式的数据
echo $jsoncallback . "(" . $json_data . ")";
?>

改写成为狐表端代码

jsonp.htm代码如下

Dim e As RequestEventArgs = args(0)
Dim ja As New Jarray '定义数组
ja.Add("customernamedddd1")
ja.Add("customername2ffff")
Dim json As String = "callbackFunction(" & ja.ToString & ")"
e.WriteString( json )



以下的HTML代码不可以正常执行

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 实例</title>
<script src="https://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>
</head>
<body>
<div id="divCustomers"></div>
<script>

$.getJSON("http://www.664748.com:8083/jsonp.htm?jsoncallback=?", function(data) {
var html = '<ul>';
for(var i = 0; i < data.length; i++)
{
html += '<li>' + data[i] + '</li>';
}
html += '</ul>';
$('#divCustomers').html(html);
});

</script>
</body>
</html>


下面的代码是可以的执行的

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 实例</title>
</head>
<body>
<div id="divCustomers"></div>
<script type="text/javascript">

function callbackFunction(result, methodName)
{
var html = '<ul>';
for(var i = 0; i < result.length; i++)
{
html += '<li>' + result[i] + '</li>';
}
html += '</ul>';
document.getElementById('divCustomers').innerHTML = html;
}

</script>
<script type="text/javascript" src="http://www.664748.com:8083/jsonp.htm?jsoncallback=callbackFunction"></script>
</body>
</html>



[此贴子已经被作者于2022/4/14 13:25:28编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111699 积分:568631 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/14 13:43:00 [只看该作者]

sonp.htm代码如下

Dim e As RequestEventArgs = args(0)
Dim ja As New Jarray '定义数组
ja.Add("customernamedddd1")
ja.Add("customername2ffff")
Dim json As String = ja.ToString
e.WriteString( json )

HTML代码
<script>

$.getJSON("http://www.664748.com:8083/jsonp.htm"function(res) {
var data = JSON.parse(res);
var html = '<ul>';
for(var i = 0i < data.lengthi++)
{
html += '<li>' + data[i] + '</li>';
}

 回到顶部
帅哥哟,离线,有人找我吗?
tianhao0817
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:122 积分:1290 威望:0 精华:0 注册:2020/5/16 10:30:00
  发帖心情 Post By:2022/4/14 13:48:00 [只看该作者]

老师,我按照你的代码还是不可以了,
如果服务端是PHP,那么两种写法都可以
[此贴子已经被作者于2022/4/14 13:51:16编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111699 积分:568631 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/14 14:00:00 [只看该作者]

$.getJSON("http://www.664748.com:8083/jsonp.htm"function(res) {
alert(res); //这里返回什么内容?
var data = JSON.parse(res);

 回到顶部
帅哥哟,离线,有人找我吗?
tianhao0817
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:122 积分:1290 威望:0 精华:0 注册:2020/5/16 10:30:00
  发帖心情 Post By:2022/4/14 14:24:00 [只看该作者]

Dim e As RequestEventArgs = args(0)
Dim ja As New Jarray '定义数组
ja.Add("customernamedddd1")
ja.Add("customername2ffff")
Dim json As String = ja.ToString
e.WriteString( json )

老师,用alert什么也弹不出来 但是打开网页
http://www.664748.com:8083/jsonp.htm 显示以下内容
[ "customernamedddd1", "customername2ffff" ]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111699 积分:568631 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/14 14:27:00 [只看该作者]

改为使用jQuery ajax():$.ajax

 回到顶部