0

我的jQuery方法——

jQuery("#upload_button").click(function(){
    var exceldata = jQuery("#upload_button").serialize();
    var url = "module/controller/contrlrmethod/exceldata/" + exceldata;
    if( exceldata != "" )
    {
        jQuery.ajax({
            url: url,
            type: 'post',
            success: function(data)
            {
                alert(data);
            }
        })
    }
    else
    {
        alert("I am in else");
    }
});

控制器方法 -

public function contrlrmethodAction()
{
    //Get All Parameter data
    $params = $this->_getAllParams();
    echo "<pre>";print_r($params);die;
}

我正在通过此按钮上传 Excel 表upload_button。但每次它进入其他部分时,无论我是否上传excel。让我知道我做错了什么。我正在使用 PHPExcel 库来进一步处理数据,但它总是在其他部分。

4

2 回答 2

7

不确定,但看起来你正在序列化按钮..

var exceldata = jQuery("#upload_button").serialize();
                        --^^^^^^----here

它应该是您的表单 ID。

var exceldata = jQuery("#formID").serialize(); 

以及其他一些错误...因为您使用的是 ajax post ..您可以通过data选项发送数据,无需在 url 中传递序列化数据。

  var url = "module/controller/contrlrmethod/exceldata/";
 jQuery.ajax({
        url: url,
        type: 'post',
        data: exceldata,  //<--here
        success: function(data)
        {
            alert(data);
        }
    })

注意:如果您尝试使用 ajax post 上传文件..那么这是不可能的,您必须使用 iframe ...或使用其他一些 ajax 文件上传插件

于 2013-03-05T10:02:05.527 回答
0

您不能使用 AJAX 上传文件。您必须在表单上进行旧式 POST。

另一方面,如果您想使用 ajax 发送表单,则需要序列化整个表单,而不仅仅是提交按钮。

var serializedForm = $("form").serialize();
jQuery.ajax({
    url: 'module/controller/contrlrmethod',
        type: 'POST',
        data: serializedForm,
        success: function(data)
        {
            alert(data);
        }
    });

但正如我所说,这段代码不会上传文件。它只是修复您的表单帖子。

于 2013-03-05T10:12:33.627 回答