【Go 语言社区】跨域问题解决方案:jsonP客户端和服务器代码

时间:2022-05-04
本文章向大家介绍【Go 语言社区】跨域问题解决方案:jsonP客户端和服务器代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

客户端代码:

<html>

<head>

<script type='text/javascript'>

function mycallback(record) {

alert(record);//record是返回的数据

}



function jsonPRequest(){

var url = 'http://www.xxx.com/jsonP/request_data.php?callback=mycallback';

var script = document.createElement('script');

script.setAttribute('src',url);

document.getElementsByTagName('head')[0].appendChild(script);

}

</script>

</head>

<body>

<!-- 点此按钮请求数据 -->

<button onclick='void jsonPRequest();'>请求数据</button>

</body>

</html>

服务器代码: JAVA:

boolean jsonP = false;

String cb = request.getParameter("callback");

if (cb != null) {

    jsonP = true;

    response.setContentType("text/javascript");

} else {

    response.setContentType("application/x-json");

}

Writer out = response.getWriter();

if (jsonP) {

    out.write(cb + "(");

}

out.print(dataBlock.toJsonString());

if (jsonP) {

    out.write(");");

}

PHP:

$callback = $_REQUEST['callback'];



// Create the output object.

$output = array('a' => 'Apple', 'b' => 'Banana');



//start output

if ($callback) {

    header('Content-Type: text/javascript');

    echo $callback . '(' . json_encode($output) . ');';

} else {

    header('Content-Type: application/x-json');

    echo json_encode($output);

}

ASP.net:

String jsonString = "{success: true}";

String cb = Request.Params.Get("callback");

String responseString = "";

if (!String.IsNullOrEmpty(cb)) {

    responseString = cb + "(" + jsonString + ")";

} else {

    responseString = jsonString;

}

Response.Write(responseString);