PHP显示错误的名称值

时间:2016-04-26 01:50:18

标签: javascript php twitter-bootstrap

我正在使用x-editable作为我的编辑库。

我的问题是,当我去插入我的数据并通过我的控制器运行时,当我var_dump PHP时,它显示错误的值。

我插入的行是

<input class="form-control updateField" data-url="{{ route('socialDataSubmit', 1)}}" data-title="Facebook" name="facebook" placeholder="Facebook" type="input" value="{{ old('facebook', @$siteSocialSettingsData->facebook)}}"> <span class="input-group-btn"><button class="btn btn-default edit" type="button"><span class="glyphicon glyphicon glyphicon-pencil"></span></button></span>

正如您在我的jQuery中看到的那样,console.log这显示了应该插入到数据库中的正确值。但是,当我到达PHP时,我从另一个选项卡(使用引导选项卡)获取"name"输入字段为什么?

输入的名称:

  <input class="form-control updateField" data-url="{{ route('generalDataSubmit', 1)}}" data-title="Website Name" name="siteName" placeholder="Email" type="input" value="{{ old('siteName', $siteSettingsData->siteName)}}"> <span class="input-group-btn"><button class="btn btn-default edit" type="button"><span class="glyphicon glyphicon glyphicon-pencil"></span></button></span>

控制器:

public function generalSettingsGeneralSubmit(Request $request, $id)
    {
        $dbUpdate                = generalSettings::find($id);
        $dbColumnName            = Request::input('name');
        $dbColumnValue           = Request::input('value');

        $dbUpdate->$dbColumnName = $dbColumnValue;
        $dbUpdate->save();

    }

    public function generalSettingsSocialSubmit(Request $request, $id)
    {

        $social = socialSettings::where('id','=',$id)->first();

        if(is_null($social))
        {
           $socialInsert = new socialSettings;

           $socialInsert->socialName  = Request::input('name');
           $socialInsert->socialLink  = Request::input('value'); 
           $socialInsert->save();
        }else{
           var_dump(Request::input('name'));
           var_dump(Request::input('value')); 
           die(); 
        }
    }

jQuery的:

$(function(){


$.fn.editable.defaults.mode = 'inline';

$.fn.editable.defaults.params = function (params) {
    params._token = $("#_token").data("token");
    return params;
};
   var dataURL   = $('.updateField').data('url');
   var inputName = $('.updateField').attr("name");

$('.updateField').editable({
    type: 'text',
    url: dataURL,    
    name: inputName,    
    placement: 'top',
    title: 'Enter public name',
    toggle:'manual',
    send:'always',
    ajaxOptions:{
      dataType: 'json'
    }    
});

$('.edit').click(function(e){ 
    var container = $(this).closest('.input-group'); // !!
    var input     = container.find('.updateField');
    var inputName = input.attr('name');
    var dataURL   = input.data('url');

      console.log(inputName);  
       e.stopPropagation();
       container.find('.updateField').editable('toggle'); // !!
       container.find('.edit').hide(); // !!
});
    $(document).on('click', '.editable-cancel, .editable-submit', function(e){
        $(e.target).closest('.input-group').find('.edit').show(); // !!
    })             
//ajax emulation. Type "err" to see error message
$.mockjax({
    url: '/post',
    responseTime: 100,
    response: function(settings) {
        if(settings.data.value == 'err') {
           this.status = 500;  
           this.responseText = 'Validation error!'; 
        } else {
           this.responseText = '';  
        }
    }
}); 

});

1 个答案:

答案 0 :(得分:0)

@Jess,我发现了一个可能导致问题的问题:

console.log内容基于:

var container = $(this).closest('.input-group'); // !!
var input     = container.find('.updateField');
var inputName = input.attr('name');

代码正在获得&#34;这个&#34;内容,然后是.closest()函数,它将获得与您的条件匹配的第一个元素;

但是,在您发送给PHP的变量上:

var dataURL   = $('.updateField').data('url');
var inputName = $('.updateField').attr("name");

它正在从&lt; .updatedField&#39;中获取内容,它开始从文档的开头获取。

我的猜测是,尝试为此输入添加一个唯一ID,并检查它是否有效。类似的东西:

<input id="test-id-sample" class="form-control updateField"
...
var inputName = $('#test-id-sample .updateField').attr("name");