我正在使用Bootstrap Typeahead插件,如下所示:
$('#Organisation').typeahead({
source: function (query, process) {
return $.get(AppURL + 'Organisations/Manage/SearchByName/',
{
term: query
},
function (data) {
var results = [];
var fullResults = [];
$.each(data, function (index, item) {
results.push(item.label);
fullResults.push({
id: item.ID,
label: item.label
});
});
return process(results);
});
},
updater: function (selection) {
$('#OrganisationID').val(selection);
}
});
Run Code Online (Sandbox Code Playgroud)
我有两个返回的数组,这是因为Typeahead只需要一个字符串列表而不是一个对象.第二个数组包含label和id.
一旦用户从列表中选择一个项目,我需要从该选择中获取ID,然后使用它插入隐藏字段.但选择将只是名称,因为ID不能通过Typeahead传递.
关于如何解决这个问题的任何想法?
两个返回数组的示例:
结果: ["Organisation 1","Organisation 2"]
fullResults: [{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]
我有简单的数据网格,如下所示:
<div class="uiGridContent">
<table>
<tbody id="page-1">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td>Cell 3</td>
</tr>
</tbody>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
*请注意,我在uiGridContent div上方和下方的div中的单独表格中有一个页眉和页脚.这个例子不需要.
var nextPage = 1, lastScrollTop = 0, st;
$('.uiGridContent').scroll(function(){
var st = $(this).scrollTop();
// We're scrolling down
if (st > lastScrollTop){
if( $('.uiGridContent').scrollTop() + $('.uiGridContent').innerHeight() >= $('.uiGridContent')[0].scrollHeight && nextPage < 10) {
$.ajax({
url: '<?php echo $appurl; ?>?page=' + nextPage,
success: function(data) {
nextPage = nextPage + 1;
var content = $(data).find('.uiGrid tbody').html();
$('.uiGridContent tbody').last().after('<tbody id="page-'+nextPage+'">'+content+'</tbody>');
},
error: function(data) {
alert(data); …Run Code Online (Sandbox Code Playgroud) 在CakePHP 3.0命名参数已被删除(感谢上帝),支持与其他应用程序框架内联的标准查询字符串参数.
我仍然在努力解决的问题是,在其他MVC框架中,例如ASP.NET,你将传递ActionResult中的参数(与函数相同):
Edit( int id = null ) {
// do stuff with id
}
Run Code Online (Sandbox Code Playgroud)
并且该方法将作为查询字符串传递给id:/Edit?id=1并且您将使用路由使其非常类似于:/Edit/1.
在CakePHP中,但是在函数参数中传递的内容如下:
function edit( $id = null ) {
// do stuff with $id
}
Run Code Online (Sandbox Code Playgroud)
必须作为传递参数完成,例如:/Edit/1绕过查询字符串的想法,以及路由以改进URL的需要.
如果我在该编辑的链接中命名params,如:
$this->Html->link('Edit', array('action' => 'edit', 'id' => $post->id));
Run Code Online (Sandbox Code Playgroud)
然后我必须这样做:
public function edit() {
$id = $this->request->query('id');
// do stuff with $id
}
Run Code Online (Sandbox Code Playgroud)
获取传递的参数id.想到它会在像CakePHP 3.0的ASP.NET中那样在功能中提取它,但事实并非如此.
我更喜欢在编辑链接中为传递的值添加前缀而不是仅仅传递它们,所以我不必在另一端担心序数,我知道它们是什么等等.
有没有人使用这些方法将数据传递给CakePHP中的方法,并且可以更好地了解正确的处理方式以及3.0版本中的更改将如何改善这一领域的内容......
我正在尝试使用以下.htaccess中的以下内容强制删除或添加尾部斜杠到我的CakePHP 2.x应用程序/app/webroot.
#<IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^ index.php [L]
#</IfModule>
<IfModule mod_rewrite.c>
# Add trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|)$
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
或者以下用于添加尾部斜杠.
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但我不想强制执行域,因为它可能在本地或在子文件夹中运行.我该如何解决?我在网上看到的所有文档似乎都强制执行应用程序的完整网址.
事实上,即使我使用FULL url它仍然无法正常工作.有没有人设法让这个与CakePHP合作?似乎你必须通过index.php文件运行它
为了澄清我正在寻找一种解决方案,用于在CakePHP中添加和删除尾部斜杠,而无需将URL硬编码到.htaccess文件中.
我想替换下面的代码,不再依赖_.each()underscore.js或lodash.js的功能:
function fset(data) {
_.each(dataDefault, function(item, key) {
var val = ( data[key] ? data[key] : dataDefault[key] );
$rootScope.meta[key] = val;
});
};
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想使用 vanilla JavaScript for 循环,但我不明白_.each()underscore/lodash 中的函数如何替换它......
就像是:
for(var i=0; i<data.length;i++) {
var val = ( data[key] ? data[key] : dataDefault[key] );
$rootScope.meta[key] = val;
}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何以这种方式获得钥匙和物品......
dataDefault 好像:
var dataDefault = {
title: null,
description: null
};
Run Code Online (Sandbox Code Playgroud)
调用函数的一个例子是:
meta.fset({
title: 'Hello world',
description: 'DESC'
});
Run Code Online (Sandbox Code Playgroud) 使用 NodeJS 我想获取 Windows 上打开的应用程序列表。
类似的东西:
exec("tasklist", function (error, stdout, stderr) {
for(var i=0;i<stdout.length;i++)
{
if( stdout[i]['name'].indexOf('ll_') > -1 )
{
appList.push({'id':stdout[i]['id'],'name':stdout[i]['name']});
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果appList应用程序的 ID 和名称以ll_.
我怎样才能做到这一点?
我有一些外部HTML(由GeoJSON生成),其中包含地图上的标记列表.项目的示例是:
<ul id="marker-list">
<li data-lat="53.3895673" data-lng="-1.4725166">Marker 1</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
然后我有以下jQuery监听其中一个项目的click事件,然后应该关注这些坐标并触发标记上的click事件(打开它的弹出窗口).
$(document).on('click', '#marker-list li', function(e){
e.preventDefault();
var latlngPoint = new L.latLng($(this).attr('data-lat'), $(this).attr('data-lng'));
map.setView(latlngPoint, 18);
map.fireEvent('click', {
latlng: latlngPoint,
layerPoint: map.latLngToLayerPoint(latlngPoint),
containerPoint: map.latLngToContainerPoint(latlngPoint)
});
});
Run Code Online (Sandbox Code Playgroud)
该setView工作正常,但弹出窗口没有被打开...
添加:
map.on('click', function(e){
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
显示click事件被触发,但它不会导致弹出窗口打开...如何让弹出窗口打开?有没有办法定位标记?
我们的 Rails 应用程序中有一个页面,当用户提交表单时,我们希望将他们重定向到其他地方,如果他们单击浏览器中的后退按钮,则不会将他们带回到上一页。
在这种情况下使用redirect_to our_new_path因此 不起作用。
我们的解决方案是使用 JavaScript 来处理它。所以我们使用 AJAX 提交表单,然后 Rails 会像这样响应:
render json: { redirect: our_new_path }
然后我们用响应进行替换,这样它就不会创建历史记录:
(data) => window.location.replace(data.redirect)
然而,我们真的不喜欢为此依赖 JavaScript...是否可以在 Rails 中使用 HTTP 重定向进行重定向而不创建历史记录?
我有以下代码:
<fieldset>
<legend>Do you currently have SolidWorks</legend>
<ul>
<li><label for=""><input type="radio" name="solidworks" value="Yes" id="rdYes" /> Yes</label></li>
<li><label for=""><input type="radio" name="solidworks" value="No" id="rdNo" /> No</label></li>
</ul>
</fieldset>
<fieldset id="boxReseller" style="display:none;">
<legend>Who is your SolidWorks reseller?</legend>
<ul>
<li><label for=""><input type="radio" name="reseller" value="Cad Connect" /> Cad Connect</label></li>
<li><label for=""><input type="radio" name="reseller" value="Cadtek" /> Cadtek</label></li>
<li><label for=""><input type="radio" name="reseller" value="CCSL" /> CCSL</label></li>
<li><label for=""><input type="radio" name="reseller" value="Innova" /> Innova</label></li>
<li><label for=""><input type="radio" name="reseller" value="NT CAD/CAM" /> NT CAD/CAM</label></li>
<li><label for=""><input type="radio" name="reseller" value="Solid Engineer" …Run Code Online (Sandbox Code Playgroud) 我已经开始开发这个非常简单的PHP登录,要求输入密码才能访问网站.它还会创建一个cookie,以便在用户关闭浏览器窗口之前继续访问.
在每个页面的顶部,我检查cookie:
<?php
if(!isset($_COOKIE['authorised']) || ($_COOKIE['authorised'] != 'true'))
{
include('login.php'); exit;
}
?>
Run Code Online (Sandbox Code Playgroud)
如果没有,那么我退出并显示登录表单:
<?php
function pageURL()
{
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on")
{
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else
{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
$pageRedirect = pageURL();
if(isset($_POST['password']) && ($_POST['password'] == 'qwe123'))
{
setcookie('authorised', 'true'); header("Location:$pageRedirect",303);
}
else
{
include('noaccess.php'); exit;
}
?>
<form action="<?php echo pageURL(); ?>" method="post">
<input type="password" name="password" /> …Run Code Online (Sandbox Code Playgroud)