<script type="text/javascript">
function ajaxSubmit(form){
$.ajax({
url: "submit.php", 
type: "post",
data: {param1:form.param1.value,
   param2:form.param2.value,
   param3:form.param3.value,
   param4:form.param4.value
},
dataType: "json",
contentType: "application/json;charset=utf-8",
success:function(data){
//测试参数值
alert(data);
},
error:function(e){
alert('ajax hava an error');
}, 
complete:function(e){
}
}); 
}
</script>
<form name="myform" onsubmit="ajaxSubmit(this)">
<input type="hidden" name="param1" value="" />
<input type="hidden" name="param2" value="" />
<input type="hidden" name="param3" value="" />
<textarea name="param4" rows="" cols="" class="textarea"></textarea>
<input type="submit" name="submit" value="发布" />
</form>
<!--
表单的默认值
//param1 --- 类似"string_2342_3200"格式的一个字符串
//param2 --- 这里是32位的英文和字母组合的字符串
//param3 --- 有一串中文字(类似留言的标题),长度不超过50个汉字
//param4 --- 一大串中文字(类似留言的内容),长度不超过500个汉字
-->$param1 = $_POST["param1"];
$param2 = $_POST["param2"];
$param3 = $_POST["param3"];
$param4 = $_POST["param4"];
$array = array($param1,$param2,$param3,$param4);
echo json_encode($array)
为什么我通过PHP获取不到任何值呢?而且有时候不错误提示的时候获取的是空值,错误提示的时候比较多,怎么会有时错误有时不错误提示呢?是因为dataType的问题吗?
另外我想问一下jquery的ajax的data参数每个参数值的长度是否有限制?get方式我知道有限制,post的有限制吗?限制的长度是多少?

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude">
    <head>
     
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
     
        <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.6/jquery.min.js"></script>
        
    </head>
    <div> <script type="text/javascript">
        function ajaxSubmit(){
            $.ajax({
                url: "index.php", 
                type: 'POST',
                data: {
    param1:$("#param1").val(), 
    param2:$("#param2").val(), 
    param3:$("#param3").val(), 
    param4:$("#param4").val()
                }, 
                success:function(data){
                    //测试参数值
                    alert(data);
                    },
                error:function(e){
                    alert('ajax hava an error');
                    }, 
                complete:function(e){
                    }
            }); 
            
        }
    </script>
    <form name="myform" >
        <input type="hidden" name="param1"  id="param1" value="1" />
        <input type="hidden" name="param2"  id="param2" value="2" />
        <input type="hidden" name="param3"  id="param3" value="3" />
        <textarea name="param4" rows="" cols="" class="textarea" id="param4"></textarea>
        <input type="button" name="submit" value="发布"  onclick="ajaxSubmit();return false;"/>
    </form>
    </div> 
    </body>
    </html>呵呵,弱弱的改了一下
      

  2.   

    我前面的js少写了一个return false,其实过程和你的一样。
    差别是我这边不能通过id来获取,只能通过form来获取表单项的值。
    而且目前来说,在前台的js里,我的那些个值都可以取得到。问题是出现在通过jquery.ajax传递到php的时候php获取不到。
      

  3.   

    现在就怀疑是contentType的问题
      

  4.   

     1.contentType: "application/json;charset=utf-8" 没有这种写法 去掉
     2.<form name="myform" onsubmit="ajaxSubmit(this)"> 改为<form name="myform"   onsubmit="ajaxSubmit(this);return false;">否则会跳转    例子的话应该是刷新
      

  5.   

    1,ajax参数的,但可能值写的不对。我试过去掉了,去掉了以后直接就ajax报错,会调用error的
    2,这个没关系的,因为我其实return false也写在ajaxSubmit函数里了,跳转这个是没问题的。