当php以json格式返回整个表单,然后打印为html时,表单在serialize()时未定义

时间:2012-03-31 16:32:45

标签: php jquery ajax json

这就是场景,我正在返回一个完整的表单,其中填充了php作为json的值,然后它将在jquery中获取并附加到div以显示它。

所以当我使用例如提交它时。 ($(#formID).serialize()),它不返回任何值,也没有被序列化。

任何帮助将不胜感激。 非常感谢。

抱歉,如果它不完整。

这就是:

来自php:

我使用

返回值
return json_encode( array( "msg"=>"test", "html"=>$this->getFormData()) );

“html”将返回包含所有表单字段的编码表单。 “msg”将返回服务器端验证(如果有的话)

来自客户端:

我使用jquery / ajax发布并返回这样的结果。

                var _params = {};
                    _params["pageid"] = pageid; 
                    _params["page"] = page;                       
                    $.ajax
                    ({
                        url: "control/route.php",
                        type: "POST",
                        dataType: "JSON",
                        data: _params,
                        async: false,
                        cache: false,
                        success: function(data)
                        {
                                        if (data.html)
                                        {                                            
                                            $("#formID").append(data.html);                                                
                                        }
                                        if (data.msg)
                                        {
                                            emp.message = data.msg;
                                            emp.showError();
                                            msg.show(200);
                                    }

                        });

这会将结果呈现为一个带有数据库值的表单。

但是当我要序列化相同的formID时,它没有返回任何值,你认为它是因为它是从PHP返回为JSON吗?

1 个答案:

答案 0 :(得分:1)

所有serialize()都会将表单编码为适合提交的URL友好文本字符串。它不会自动发送表单等。您也忘记在选择器中使用撇号 - 您引用了元素的ID,因此您应该使用它们:

$.post('/path/to/script.php', $('form#id').serialize(), function() {
  // Do something on success
});