jQuery AJAX 简单的 PHP 提交未生效

3
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

今天我有一个非常基础的问题!我正在尝试从jQuery发布到托管在本地主机上的PHP文件。

我的JS代码:

$("#searchNameButton").click(function() {
var name = $("#searchNameText").val();
 $.ajax({
        type: 'POST',
        url: 'localhost:8080/getNameInfo.php', // -> this works fine from the browser
        // data: { name: name }, -> commented out
        success: function(){
            alert('request successful');
        },
        error: function(xhr, textStatus, errorThrown){
            alert('request failed');
        }
  })
});

我要翻译的内容是:我的PHP文件(getNameInfo.php),这是一个非常基础的测试文件:

<?php
  echo 'TEST';
?>

在jQuery中,它总是会出现错误,显示“内部服务器错误”。我正在使用Ripple模拟器,这是控制台中显示的内容:
POST https://rippleapi.herokuapp.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=localhost%3A8080/getNameInfo.php 500(内部服务器错误)
我认为这与文件中编写的内容无关。有什么建议吗?谢谢!
编辑:找到了这个链接LINK,但它不能解决我的问题。如果按照此处所说的做,将不会抛出任何错误(变成""),但仍然会失败。
编辑2:如果我在Ripple中将跨域代理设置为本地(建议在上面的链接中),我会得到

OPTIONS http://localhost:4400/ripple/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=http%3A//localhost%3A8080/getNameInfo.php 网络错误:连接被拒绝

编辑 3:将我的 URL 更改为本地

C://Mobile//Cross-Platform//TestApp//www//php//getNameInfo.php

现在它正在运作。不知道如何在本地主机上使其工作。但是现在会继续使用,因为它只是一个学习应用程序。


ripplepi.herokuapp.com是什么?我认为你需要在你的URL前面包含http:// - Rory McCrossan
不行,不起作用。这是从Ripple模拟器发出的调用。 - Dani P
不需要使用localhost:8080/getNameInfo.php,只需简单的getNameInfo.php即可,如果两个页面在同一个目录中。 - Sunil Pachlangia
1
500响应代码在大多数情况下意味着PHP致命错误。请检查您的PHP错误日志。 - Anthony
正如我上面提到的,如果直接从浏览器访问,URL就可以正常工作。我猜这可能与Ripple模拟器的工作方式有关。请参见我上面列出的控制台错误(已编辑原始消息)。 - Dani P
你可以尝试使用Chrome浏览器中的Postman进行模拟。 - Imtiaz Pabel
2个回答

2
getNameInfo.php文件顶部添加一个头部访问控制:
header('Access-Control-Allow-Origin: *');

0

终于,我找到了一个解决方案。 虽然这不是一个推荐的方法,但是使用

--disable-web-security

运行Chrome将允许我从localhost:3000调用托管在localhost:8080上的PHP脚本,其中PhoneGap / Ripple模拟器停留。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接