【问题标题】:I have a problem with setting-up a server side callback with PHP我在使用 PHP 设置服务器端回调时遇到问题
【发布时间】:2011-07-18 12:41:59
【问题描述】:

我是 AJAX 和 PHP 的新手,我制作了一个 HTML 文件,我在其中将信息发送到一个 PHP 文件。

如果我使用表单提交则没有问题,php 的答案很好。 当我尝试使用 AJAX 而不是表单时...我遇到了跨域调用问题!

所以我决定使用JSON回调函数和动态脚本标签解决方案。我以前用过几次,但只是在客户端,现在我需要设置服务器端,以便我的 PHP 文件可以回复回调函数。这是解释的代码:

HTML/Javascript 文件:

function setUrl(numeroAPI)
{
    var url = "http://localhost/Generatore/generatore_codice.php?numeroAPI=" + numeroAPI;       
    for(var i=1;i<=numeroAPI;i++)
    {
        url = url + "&tipoChiamataAPI" + i + "=" + document.getElementById("tipoChiamataAPI" + i).value;
    }
    url = url + "&callback=callback";
    creareScript(url);
}

function creareScript(url)
{
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= url;
    head.appendChild(script);
}

function callback(obj)
{
    alert("lala");
}

正是这段代码在其他程序中工作了很多时间......但现在警报不起作用,我读到我的 PHP 文件应该是这样的:

$json = json_encode($data);

echo $_GET['callback'] . "(".$json.");";

这就是我所做的......当然我错过了一些东西......有什么建议吗?

【问题讨论】:

  • 欢迎XSS等垃圾
  • 你的 url 传递给 creareScript() 后是什么样子的?
  • 这取决于...例如它可能是“localhost/Generatore/…

标签: php javascript ajax json callback


【解决方案1】:

你甚至没有在任何地方调用 callback() 函数,所以它不能工作。

另外,你的代码很危险。

尝试添加

callback(); 

之后

head.appendChild(script);

【讨论】:

  • 我不需要调用它!这就是脚本标签的乐趣!当我从服务器收到答案时应该自动调用它,我已经使用过很多次了,所以不要说它需要被调用!无论如何,问题不在于 javascript……而是 php 文件……
  • 回调函数中的obj参数...是服务器发送的json对象...所以我应该使用它例如alert(obj.data)或类似的东西...我使用了一个简单的 alert("lala") 来查看函数是否被调用...
  • 我解决了这个问题!代码是正确的,问题是错误地插入了 2 行额外的代码!谢谢大家!
猜你喜欢
  • 1970-01-01
  • 2015-06-21
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多