【问题标题】:Javascript POST to PHP works locally, fails externallyJavascript POST 到 PHP 在本地工作,在外部失败
【发布时间】:2018-05-31 12:25:56
【问题描述】:

这是我拥有的非常简单的代码,它可以在我的网站上运行(如果指向 php 的链接只是“/phpcode.php”,但如果我将 javascript 请求放在另一个网站上并调用完整链接,则无法检索数据。 我正在使用godaddy。 我是初学者,完全不知道在哪里寻找解决方案或排除故障。

这是PHP端(phpcode.php的完整代码):

<?php 
$val = 'apple'; 
echo json_encode($val);
?>

这里是 javascript 请求:

 $.post(
    		"http://website.com/phpcode.php",function(data){
    			alert(data);
    },
    		"json");

这里是javascript页面的完整代码

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){  
       $.post(
		"http://website.com/phpcode.php",function(data){
			alert(data);
},
		"json");
    				});
			   });
</script>
</head>
<body>

<button>TEST POST</button>

</body>
</html>

感谢您的帮助。

【问题讨论】:

  • 请发布包括正文的 http 结果(200、404、500)(一些错误的消息是否存在于某处......或不存在)。
  • HTML 位于何处?它是托管在 Godaddy 中还是保存在本地计算机上?
  • 我们需要服务器正在抛出的错误消息才能知道发生了什么。但我想这是一个 CORS 问题,在这种情况下应该通过将 http 更改为 https 来解决。
  • 检查您的控制台是否有错误。
  • 好的,根据@Stefan 的建议,我去 chrome 检查并检查了响应。响应在那里并且是正确的,但是 function(data){alert(data);部分没有把它带到屏幕上,测试更多。

标签: javascript php jquery http-post


【解决方案1】:

这可能是导致错误的原因。添加行

header("Access-Control-Allow-Origin: *");

phpcode.php 中的&lt;?php 之后,这将使您的代码:

<?php 
    header("Access-Control-Allow-Origin: *");

    $val = 'apple'; 
    echo json_encode($val);
?>

将来,如果您包含任何可以看到的错误消息/警告,您将更有可能从您的问题中获得更好的答案。您经常可以在 javascript 控制台中看到这些内容。 [ctrl] + [shift] + [i] 在 chrome 中,然后转到 console 选项卡。

【讨论】:

    【解决方案2】:

    好的,已经解决了。 第一个问题是 php 代码被放入 http: 站点并从 https: 站点进行调用。 第二 - 特定站点无法发出警报(数据),但响应在那里。感谢@stefan 提醒您检查回复。用一个额外的变量解决了它。

    感谢您的帮助!

    【讨论】:

    • 仅供参考:可以为此使用 protocol relative url。 $.post("//website.com/phpcode.php"。浏览器将使用相同的协议页面正在使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2018-07-01
    • 2012-09-09
    • 2018-04-15
    • 1970-01-01
    • 2022-01-23
    • 2013-11-14
    相关资源
    最近更新 更多