我正在使用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 = '';
}
}
});
});
答案 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");