0

現在、CodeIgniter を使用してインベントリ プロジェクトに取り組んでいます。vendorlist フォームには、名前、住所、担当者、電話番号というテキスト フィールドがあります。

これは、& (アンパサンド) 記号を除く他のすべてのテキストに対して正しく機能しています。その後に & 記号やその他のテキストを挿入すると、まったく機能しません。

vendorlist.php ファイルでは、次のコードを使用しています。

<form onsubmit="return false" id="frmvendor">
            <dl>
                <dt><label><?php echo $this->lang->line('name');?></label></dt>
                <dd><input type="text" name="vendorname" id="vendorname" value="" class="validate[required] text-input" /></dd>
            </dl>
            <dl>
                <dt><label><?php echo $this->lang->line('address');?></label></dt>
                <dd><textarea name="address" id="address" cols="22" class="validate[required] text-input"></textarea></dd>
            </dl>
            <dl>
                <dt><label><?php echo $this->lang->line('phone');?></label></dt>
                <dd><input type="text" name="phone" id="phone" value="" size="60" class="validate[required] text-input" /></dd>
            </dl>
            <dl>
                <dt><label><?php echo $this->lang->line('contactperson')?></label></dt>
                <dd><input type="text" name="contactperson" id="contactperson" value="" /></dd>
            </dl>
            <dl>
                <dt><label><?php echo $this->lang->line('active');?></label></dt>
                <dd>
                <?php echo $this->lang->line('yes');?><input type="radio" name="vendor_locked" checked="checked" value="0" id="vendor_locked" />
                <?php echo $this->lang->line('no');?><input type="radio" name="vendor_locked" value="1" id="vendor_unlocked" />
                </dd>
            </dl>
            <dl>
                <dt></dt>
                <dd><input type="submit" name="save" value="Save" /><input type="button" name="cancel" value="Cancel" onclick="resetForm('frmvendor')" /></dd>
            </dl>

            <input type="hidden" id="vendorid" name="vendor" value="" />
        </form>

& 記号に対してどのように機能しますか? みんな助けて。

4

1 に答える 1

0

私は自分の質問の解決策を得ました。問題は、シンボルが変数と見なされていたことです。そのため、コントローラーに 1 つの関数を作成し、ビュー ファイルに 1 つの関数を作成しました。

コントローラー ファイルで、次の関数を作成し、str_replace を次のように使用しました。

function savevendor()
{
        //print_r ($_POST);
        //die();

    $this->redir->set_last_index();
    $vendor_id  =   $this->input->post('id');

    $refinevendor = str_replace("#_#","&",$this->input->post('vendor'));
    $refineaddress = str_replace("#_#","&",$this->input->post('address'));
    $refinecontactperson= str_replace("#_#","&",$this->input->post('contactperson'));

    $vendordata =   array(
                          'vendor'          =>$refinevendor,
                          'address'         =>$refineaddress,
                          'contact_person'  =>$refinecontactperson,
                          'user_id'         =>$this->session->userdata('user_id'),
                          'phone'           =>$this->input->post('phone'),
                          'upd_date'        =>date('Y-m-d'),
                          'locked'          =>$this->input->post('locked')
                          );


    if((int)$vendor_id==0){
        $arr= array_merge($vendordata,array("ent_date"=>date("Y-m-d")));
        $this->mdl_vendor->save($arr);
        echo $this->lang->line('vendor_has_been_created');
    }else{
        $this->mdl_vendor->save($vendordata,$vendor_id);
        echo $this->lang->line('this_vendor_has_been_saved');
    }
}

ビュー ファイルでは、次の関数を作成し、.replace を次のように使用しました。

関数 savevendor(){

showloading();

var id = $('#vendorid').val();
var vendor = $('#vendorname').val();
var refinevendor = vendor.replace("&","\#_#");

var address = $('#address').val();
var refineaddress = address.replace("&","\#_#");

var phone = $('#phone').val();
var contactperson = $('#contactperson').val();
var refinecontactperson = contactperson.replace("&","\#_#");

var locked  =   $('input:radio[name=vendor_locked]:checked').val();
var params = 'id='+id+'&vendor='+refinevendor+'&address='+refineaddress+'&phone='+phone+'&contactperson='+refinecontactperson+'&locked='+locked+'&unq='+ajaxunq;


$.ajax({
       type     :   'POST',
       url      :   'purchase/savevendor',
       data     :   params,
       success  :   function(data){
                   showVendorTable();
                   resetForm('frmvendor');
                   hideloading(data);
               }
       }) //end of ajax

}

そしてそれはうまくいきました。私が実際に行ったことは、最初に & 記号を#_#記号に置き換え、最後に記号#_#を & に置き換えたことです。

于 2012-09-06T05:14:45.457 に答える