1
  1. http://serverA.com/list.php

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'
    });
});
  1. http://serverB.com/detail.php

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"
       }
    }
  }
});
4

1 回答 1

2

实际上,您已经非常接近成功了……请阅读这些要点。

  • 每当您发出 ajax 请求时,浏览器都会发送带有相关参数和详细信息的 ajax URL 命中。在受尊重的 URL 上执行 PHP 代码。它可以以某种格式返回数据。它不能直接在 PHP 变量中返回数据。

格式为:

text/html
json
xml
......

主要针对跨域请求,我们使用 JSONP。这意味着 PHP 脚本将以 JSON 格式返回数据。因此,您将json_encode直接在脚本中回显您的内容。这将是您的 ajax 请求的响应。

  • 现在,当您在 ajax 函数中获取数据时,jQuery 将使用 success: function(response){ } 来响应。所以变量响应将包含 JSON。您可以使用 jQuery 选择器访问 JSON 并将数据放入任何标签中。$().html(响应。);

这些东西可以在调试控制台的任何浏览器中进行分析。即请求什么,返回什么。甚至你可以在 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 代码。

于 2013-07-29T09:32:25.647 回答