当ajax请求时,curl返回html代码

时间:2013-10-23 17:27:18

标签: javascript php ajax

我使用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

帮帮我

1 个答案:

答案 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);
                }
           });