我使用curl将请求发送到另一个页面并将值返回给ajax,我已经阻止curl重定向到另一个并且只返回ajax的值但是我从ajax收到的最终结果包含html代码,我的代码:
PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://abc.com');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$data = curl_exec($ch);
curl_close($ch);
echo 'my value';
AJAX:
jQuery.ajax({
type: "POST",
url: "http://pagephp.com",
data: data,
success: function(result) {
alert(result);
}
});
警告将显示:<html>...</html> my value
帮帮我
答案 0 :(得分:0)
您需要将CURLOPT_RETURNTRANSFER
设置为true / 1,然后curl_exec的返回值将是您成功操作的实际结果。换句话说,它不会在成功时返回TRUE
。虽然它会在失败时返回FALSE
。
http://php.net/manual/en/function.curl-exec.php
您应该为重定向启用CURLOPT_FOLLOWLOCATION
选项,但如果您的服务器在safe_mode和/或open_basedir中生效,这可能会导致卷曲问题,这将是一个问题。
header('Content-type: application/json');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://abc.com');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$data = curl_exec($ch);
curl_close($ch);
echo json_encode('my value');
JQUERY
jQuery.ajax({
type: "POST",
url: "http://pagephp.com",
data: data,
success: function(result) {
alert(result);
}
});