HTML:
<form id="myform">
<input id="inputfield" name="view">
</form>
JS:
var inputdata = $('#inputfield').val('ocean-view');
$('#myform').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: 'http://serverB.com/detail.php',
data: inputdata,
dataType: 'jsonp'
});
});
PHP:
<?php
$view = $_GET['callback'].'('.json_encode(name) .')';
?>
HTML:
<h4><?php echo $view; ?></h4>
代码的作用是:
从serverA,将值“ocean-view”分配给输入字段,将此表单提交给serverB,并在h4标记中显示该值。
我无法弄清楚如何编写服务器端代码来输出值,即使我找到了以下帖子。
感谢任何形式的帮助。
更新 我使用YQL来帮助查看jsonp回调响应,这里是json结构:
callback({
"query": {
"count": 1,
"created": "2013-07-29T13:01:12Z",
"lang": "en-US",
"results": {
"h3": {
"class": "mytitle",
"content": "Example"
}
}
}
});
答案 0 :(得分:2)
实际上你非常接近成功......只需阅读这些要点。
格式为:
text/html
json
xml
......
主要针对跨域请求,我们使用JSONP。
这意味着PHP脚本将以JSON格式返回数据。
所以你只需直接回复你的json_encode
脚本。那将是你的ajax请求的响应。
可以在调试控制台的任何浏览器中分析这些内容。请求的内容和返回的内容。 即使你可以在Mozilla中使用Firebug来检查ajax请求。
所以你会做三个改变。
在Ajax函数中写一个成功函数:
var inputdata = $('#inputfield').val('ocean-view');
$('#myform').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: 'http://serverB.com/detail.php',
data: "inputdata="+inputdata,
dataType: 'jsonp',
success:function(response){
// response will be json type so access it
// print ur json in html tag like resposne is {"data":23}
$(<jquery selector>).html(reponse.data);
}
});
});
<?php
// echo this
$inputdata = $_GET['inputdata'];
// perform you logic ,
// make an array to encode it in json
echo $_GET['callback'].'('.json_encode($responseArr) .')';
?>
并从h4标记中删除PHP代码。