0

我试图做这样的事情:

function ajaxGetId(val)
{
    $.ajax({
      type: "POST",
      url: "getID.php", // Your PHP script URL
      data: { html: val } // Data you want to pass to the PHP script
    }).done(function( response ) {
      alert( response ); // Do something with what the PHP output or die silently
    });
}

并且 php 文件是这样的,例如:

$url = $_POST['url'];
$parts = parse_url($url);
return $parts;

问题是我收到了一个巨大的警报,里面有很多 HTML 标签。你能告诉我有什么问题吗?

4

3 回答 3

2

这没有做你认为它正在做的事情:

return $parts;

当您进行 AJAX 调用时,您不是在调用 PHP 中的函数。您正在请求一个页面。该页面本质上与您在浏览器中查看的任何其他页面没有什么不同。唯一的区别在于该页面呈现的内容。

通常对于 AJAX 调用,您通常希望呈现 JSON 数据。尽管您可能还想呈现 HTML,例如,如果您通过 AJAX 将一些动态内容加载到页面中。

话虽如此,为了将信息呈现到您不使用的页面return。但是,您可以使用以下内容echo

$url = $_POST['url'];
$parts = parse_url($url);
echo $parts;

这将导致响应是发布url值的纯文本表示形式。(请注意,您实际上也没有发布一个名为“url”的值。我认为您的意思是使用:$_POST['html']代替。)

您可以通过将值作为 JSON 数据回显来添加进一步的结构。例如:

echo '{ "url" : "' . $parts . '" }';

然后在您的 JavaScript 代码中,您将获得一个实际的 JSON 对象而不是纯文本,并且您可以直接访问其属性:

alert(response.url);

随着您的数据变得更加结构化,您可以使用PHP 的json_encode()函数轻松地将其转换为 JSON 数据以回显给客户端。

于 2013-09-13T13:50:35.467 回答
0

改为:

html代替urlecho代替return

$url = $_POST['html'];
$parts = parse_url($url);
echo $parts;

在您的 ajax中,data: { html: val }html是您请求的变量。

于 2013-09-13T13:42:40.887 回答
0

尝试使用 $url = $_POST['html']; 而不是 $url = $_POST['url'];

它会正常工作

于 2013-09-13T13:48:21.877 回答