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。しかし、私がエクセルをアップロードするかどうかにかかわらず、それが他の部分で行われるたびに。私が間違っていることを教えてください。私はPHPExcelライブラリを使用してデータをさらに処理していますが、それは常に他の部分にあります。

4

2 に答える 2

7

わかりませんが、ボタンをシリアル化しているようです。

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

代わりにフォームIDにする必要があります。

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

およびその他のエラー...ajaxpostを使用しているため、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 に答える