我试着做这样的事情:
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标签。你能告诉我这是什么问题吗?
答案 0 :(得分:2)
这不符合您的想法:
return $parts;
当您进行AJAX调用时,您不是在PHP中调用函数。你正在申请一个页面。该页面与您在浏览器中查看的任何其他页面没有什么不同。唯一的区别在于该页面呈现的内容。
通常,对于AJAX调用,您通常希望呈现JSON数据。例如,如果您通过AJAX将一些动态内容加载到页面中,您可能还想呈现HTML。
话虽如此,为了向页面呈现信息,您不使用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's json_encode()
function轻松将其转换为JSON数据以回应客户端。
答案 1 :(得分:0)
改为:
html
代替url
和echo
代替return
:
$url = $_POST['html'];
$parts = parse_url($url);
echo $parts;
在您的ajax data: { html: val }
中html
您提出请求的变量。
答案 2 :(得分:0)
尝试使用$ url = $ _POST ['html'];而不是$ url = $ _POST ['url'];
它会正常工作