JavaScript怎么获取PHP数据,关于jquery:从javascript中的php脚本获取数据

博客内容讨论了在JavaScript中使用AJAX从不同域的PHP脚本获取响应时遇到的问题。作者指出,由于跨域限制,初始代码无法正常工作。解决方案包括在PHP脚本中添加`Access-Control-Allow-Origin:*`头部以允许跨域请求。同时,强调了异步调用的性质,指出在`success`回调执行前,`GetChoice()`函数不会返回任何值。
摘要由CSDN通过智能技术生成

我尝试在我的JavaScript中收到PHP响应。

我的PHP看起来像这样:

some code

if(...) echo"1";

else echo"2";

JavaScript:

function GetChoice() {

var returned="";

$.ajax({

async: false,

cache: false,

url:"http://mydomain.com/script.php",

type:"POST",

dataType:"text",

success: function(data) {

returned = data;

}

});

return returned;

}

var r = GetChoice();

alert(r);

但是GetChoice()不返回任何内容。 怎么了?

UPD:如果javascript和php脚本位于同一服务器上,则可以使用。 我的脚本位于不同的域。

如果您使用Firefox Firebug,则可以在"网络"选项卡中检查是否收到任何Ajax响应

将您的真实php代码发布到您检查$ _POST参数的位置

为什么要使用绝对路径? 是来自同一台服务器吗?

是的,它在另一台服务器上。

如果使用FF或Chrome,则可以使用开发工具,然后查看服务器返回的响应。 $ .ajax应该在开发者工具(Chrome)的"网络"标签中记录一个请求。 单击请求,然后单击响应以查看服务器发回了什么。 也许您的服务器没有发回任何东西?

尝试这个 :

temp1.php

function GetChoice() {

var returned ="";

$.ajax({

async: false,

cache: false,

type:"POST",

url:"http://localhost/temp2.php",

data: { name:"John"}

}).done(function( msg ) {

returned = msg;

});

return returned;

}

var r = GetChoice();

alert(r);

temp2.??php

echo $_REQUEST["name"];

?>

它的工作....!

这仅起作用,因为本地主机是示例中的域,并且两个脚本都在该域上运行。 OP说他们的脚本位于两个不同的域。 PHP脚本将需要在任何输出之前添加额外的标题... header(Access-Control-Allow-Origin:*);另外,在此示例中,temp1.php不是PHP,它的HTML调用了javascript资源。朱斯·萨恩(Jus sayn)。

在您的示例中,问题在于$ .ajax立即返回,而下一个语句返回result;在您甚至调用了作为成功回调传递的函数之前执行。

这是解释。

如何从异步调用返回响应?

运气,

现在是2018年,现在确实应该接受这个答案。

尝试这个:

function GetChoice() {

var returned ="";

$.ajax({

async:false,

cache:false,

url:"http://mydomain.com/script.php",

type:"POST",

dataType:"text",

success:function (data) {

alert(data);

}

});

}

我敢打赌,它什么也不会提醒

警报没有工作。

"辛勤工作"不是真正的建设性的。

它什么也没显示。警报未打。

可能是跨域问题

我该如何解决呢?我想在domain2.com网站上的javascript中在domain1.com上接收表单php脚本。

如果这是跨域问题,请确保您的PHP脚本通过添加标头(Access-Control-Allow-Origin:*)来知道这一点。在PHP脚本中的任何输出之前。

这是脚本

$.ajax({

async:false,

cache:false,

url:"http://path.com/to/file",

type:"POST",

dataType:"html",

data: 'data',

success: function(data){

alert(data);

}

});

并在您的PHP文件中编写此代码

function test()

{

$str = 'This is php file';

return $str;

}

echo test();

?>

确保php文件的路径正确,并将脚本添加到另一个PHP文件中。基本上,您需要2个文件。刚刚在我的编辑器中对此进行了测试,并且可以工作..

在成功运行回调之前,GetChoice()将不返回任何内容。

回调是您定义为成功参数的函数,直到从服务器请求数据后才会触发。

这是异步的(AJAX中的A),因此代码的其余部分继续导致GetChoice()函数在运行回调之前返回

除了他已经使用async: false指示其同步调用

公平点-我错过了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值