通过ajax能够获得php验证码页面返回的内容,但是显示为乱码估计可能是验证码页面设置了header("Content-type: image/png;charset=utf-8");
求高手指点怎么能获得验证码页面输出的验证码输入是否正确的文字内容谢谢

解决方案 »

  1.   

    具体情况要具体分析
    1、ajax 使用 XMLHttpRequest 为载体传送数据。而 XMLHttpRequest 总是将传出的数据解释为 utf-8 编码的。并不管页面是什么编码的
    因此,若页面不是 utf-8 编码时,需要用 js 函数 encodeURIComponent 将传送的数据编码成 utf-8 编码的 url 编码格式
    2、若 php 程序不是 utf-8 编码的,须将传入的数据做相应的编码转换
    3、向 ajax 返回数据时,应加上声明语言编码类型的头。无论返回的是何种编码的数据,只要头正确。浏览器端都会做出正确的动作
      

  2.   


    我的代码是    $_SESSION['seccode'] = $code;//创建SESSION
        if ($_POST['session']) {
    if ($_POST['session']!=$_SESSION['seccode']) {
    echo "验证码不正确";
    }
        }
    向 ajax 返回数据时,加上声明语言编码类型的头,应该怎么加
      

  3.   

    header("Content-type: image/png;charset=utf-8");
    红色部分为语言编码
      

  4.   

    这个我明白  我的意思是ajax验证  验证码输入是否正确的时候  返回的是乱码你刚刚说  在返回语句上加上声明语言编码类型的头
    怎么加  加在哪
      

  5.   


      $_SESSION['seccode'] = $code;//创建SESSION
      if ($_POST['session']) {
    if ($_POST['session']!=$_SESSION['seccode']) {
    //echo "验证码不正确";  
    //返回的值应该是utf-8编码格式,如果不想更改页面编码格式,建议使用英文
    echo 'right';
    exit;
    }
      }
      

  6.   

    我的整个网页用的都是utf-8编码,不需要改变编码格式我说的是这个问题判断输入的验证码与生成的验证码是否一样,如果不一样输出“验证码不正确”但总是不行   输出为一堆乱码    我怀疑  是不是     imagePng($image);
       imagedestroy($image);验证码页面的这两句话  导致整个页面是以png形式编码,导致无法输出文字
    求大神帮忙啊   这个问题发了三次贴了  老没解决
      

  7.   

    本帖最后由 xuzuning 于 2011-07-25 17:18:44 编辑
      

  8.   

    那你在验证码页面改为:header("Content-type: text/html;charset=utf-8");试试。还有确定你的程序也是用utf-8。
      

  9.   

    改过  text/html    不行
    整个php用的都是utf-8
      

  10.   

    各个浏览器里乱码总有这么一句    �PNG所以我怀疑是不是  imagePng($image);
      imagedestroy($image);这两句话的原因
      

  11.   

    你是用post方法提交的。有XMLHttpRequest .setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 这句吗?
      

  12.   

    我用的是jquery  中的ajax方法不清数怎么用   setRequestHeader("Content-Type", "application/x-www-form-urlencoded");这句话是干什么的
      

  13.   


    你是说  把验证码生成页面  用include方法导入  判断验证码是否正确的页面?
      

  14.   

    看了你的代码我无语了,先改你的PHP文件吧!
    生成图片验证码的代码单独一个文件,判断验证码是否正确单独一个文件
      

  15.   

    验证码图片是放在 img 标记中的
    <img src='验证码图片生成.php'>验证码验证是提交完成的,提交的目标是 验证码验证程序
      

  16.   


    那那个session还是放在生成验证码的页面中么只是把 if ($_POST['session']) {
        if ($_POST['session']!=$_SESSION['seccode']) {
            echo "验证码不正确";
        }
        }拿到判断验证码的页面吗?
      

  17.   

    是的,当然 session_start(); 还是要的
      

  18.   

    验证码的页面叫做  verification.php你的意思是  再一个页面a.php<?php
    /*
     * Created on 2011-7-25
     */
    header("Content-Type: text/html;charset=utf-8");
    error_reporting(E_ALL ^ E_NOTICE);
    include('verification.php');
        if ($_POST['session']) {
    if ($_POST['session']!=$_SESSION['seccode']) {
    echo "验证码不正确";
    }
        }
    ?>
    对么