【问题标题】:How to catch a response in a "POST" request? [closed]如何在“POST”请求中捕获响应? [关闭]
【发布时间】:2013-05-16 12:58:31
【问题描述】:

我有一个 html/jQuery 网页和一个 PHP 服务器。我正在从网页向我的服务器发出“发布”请求,如下所示:

var data = '{"deviceUUID":"' + userId + '"}'
                 $.ajax({
                     type: "POST",
                     url: "http://192.138.2.113/Server_CityInfo/whereSubscribed.php",
                     data: data 
                     })

如你所见,我只发送一个 id ,格式为 json。请求到达服务器,经过一些“烹饪”后,我从服务器回显到网页:

echo json_encode($result);

对不起,如果我的问题听起来很愚蠢,但是我如何用 jquery 将这个回声“捕捉”到我的网页?

【问题讨论】:

  • @Quentin:如果该链接指向描述如何执行此操作的实际文档,则会更有帮助。要么你不知道它在哪里,要么你的评论是一个毫不掩饰的 RTFM。
  • 问题是 OP 显然在好页面上阅读了 FM ,但没看懂...

标签: php jquery json post http-post


【解决方案1】:

PHP 服务器与网页位于不同的来源(不同的 ip、域、子域或协议)。因此,Same Origin Policy 捕获了您的请求。

解决此问题的常用方法有 3 种:

您可以使用JSONP,但这意味着必须使用 GET 而不是 POST,并且服务器必须以 JSONP 格式返回数据。

您可以使用CORS,但 PHP 服务器必须实现 cors 标头,并且您必须为 jQuery 实现补丁(或手动发送请求)以支持 IE8 和 IE9。 IE7 根本不支持 CORS。

第三种选择是在您的网络服务器或正确实现 CORS 或 JSONP 的第三方服务器上使用代理。对此有帮助的常见第三方服务是 YQL,还有一个非常出色的示例 here。

【讨论】:

  • 我在任何地方都没有看到将前端(html-jquery)与后端(php 服务器)放在同一个文件夹中的选项。那应该有效吗?现在我将它们都放在同一台本地机器上,但在 eclipse 上的不同“项目”中。这意味着不同的子域。但是没有特别的原因使它们位于不同的文件夹中。只是 Web 服务的前端和后端。我会试着把它们放在一起看看会发生什么。
【解决方案2】:

在这样的成功处理程序中 -

$.ajax({
    type: "POST",
    url: "http://192.138.2.113/Server_CityInfo/whereSubscribed.php",
    data: data,
    success: function (data) {
        alert(data); // here you got `$result` in data
    }
});

【讨论】:

  • 你不需要dataType: 'json'吗?
  • 可以,但如果您打算使用 $.parseJSON() 代替
  • 代码不会给出错误,但不会发出任何警告。好像函数没有被调用。
  • 您的浏览器控制台有错误吗?
  • 这意味着你得到一个错误,添加一个错误回调。
【解决方案3】:

您需要使用一个回调方法,该方法将在响应返回时对其进行处理(因为它是异步的)...

【讨论】:

  • 我能问一下为什么会投反对票吗?也许答案不是很详细,但这个问题也没有显示出太多的研究努力,我认为我的答案没有那么错误......
  • 我没有投反对票,但我认为是因为你没有说回调方法的名称是什么。
  • 我的第一反应是“好吧,我该怎么做那个?”
  • 我也没有投反对票,但你的意思是这个问题没有显示出太多的研究努力?我想只有一种方法可以做我所要求的,这就是我所要求的。如果我有答案,就没有问题了。我可以做什么样的研究?我没有找到答案或谷歌所以我在这里问..
  • @user2394470 :嗯,jquery doc (api.jquery.com/jQuery.post) 对解决方案非常清楚,我的回答中的“回调”关键字甚至可以指出您需要查看的内容。在我看来,查看文档是发布问题之前可以做的最少的研究工作,但也许我错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多