小编use*_*490的帖子

json_encode函数:特殊字符

使用json_encode对数组进行编码时,包含特殊字符的数组元素将转换为空字符串:

$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF", "time"=>....);
$json = json_encode($arr);
Run Code Online (Sandbox Code Playgroud)

在JSON编码之后,元素[funds]为空.它只发生在"ComStageSTOXX®Europe600Techn NR ETF"中的特殊字符(版权,商标等).

有什么建议?

谢谢

更新:这是在填充数组之前解决问题的方法(所有名称都来自数据库):

$mysqli->query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)

php json

41
推荐指数
5
解决办法
9万
查看次数

发布数千个vars与长JSON字符串:什么是可取的?

我需要将大约200x50(rows,cols)的表值从jQuery发布到PHP.两种选择:

1)将其作为数组发送10,000个vars(增加php.ini max_input_vars).

2)将数组序列化为JSON字符串,将其作为字符串POST并在服务器端以PHP解码.

什么是优选的?选项1的任何潜在问题?

谢谢


PS.更新.在高达250x50单元的大型输入表上测试两个魔药后,看起来第一个选项要快得多:对于JSON字符串,1-2秒对比约17-20秒.

瓶颈是服务器的数据传输时间,因为对象到JSON和后退事务几乎是即时的(几毫秒).

php arrays jquery post

17
推荐指数
1
解决办法
778
查看次数

PHP在循环中准备语句和事务

循环代码中的经典事务:

$mysqli->query("START TRANSACTION");
foreach ($pdata as $key => $value) {
    $sql    = "INSERT INTO temp (`fund_id`) VALUES (" . $value . ")";
    $result = $mysqli->query($sql);
}
$mysqli->query("COMMIT");
Run Code Online (Sandbox Code Playgroud)

然后我们改为准备好的陈述:

$mysqli->autocommit(FALSE);
foreach ($pdata as $key => $value) {
    $sql  = "INSERT INTO temp (`fund_id`) VALUES (?)";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('i', $value);
    $stmt->execute();
}
$mysqli->commit();
Run Code Online (Sandbox Code Playgroud)

问题:

1)这两个代码是否相同?我是否在准备好的陈述中遗漏了第二个代码中的内容?

2)是$mysqli->commit()一样的$mysqli->query("COMMIT")吗?

3)我是否需要$mysqli->query("START TRANSACTION");为准备好的语句块添加或者当我们设置时事务会自动启动autocommit(FALSE)

php mysql mysqli transactions

16
推荐指数
1
解决办法
1万
查看次数

MySQL加入UNION的结果

是否可以将UNION第二个表的结果与第三个表连接起来?像这样的东西:

(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361)  a
LEFT JOIN `qt1`
ON `qt1`.`Fund ID` = a.`Fund_ID`
Run Code Online (Sandbox Code Playgroud)

但是这段代码不起作用.我之前可以移动JOIN每个SELECT查询UNION,但宁愿尝试JOIN使用UNION结果.

我怎样才能解决这个问题?

mysql sql union join

7
推荐指数
1
解决办法
1万
查看次数

如何在禁用的元素上触发单击事件

我有一个禁用按钮,在选中"我接受条款和条件"复选框后启用.问题是,如果用户单击禁用按钮,我想触发警报.我怎样才能做到这一点?如果某个元素被禁用,则看起来"onclick"事件不会被触发.

代码示例:

<input id="subm_tc" class="btn btn-primary" type="submit" disabled="" value="Log in" name="Submit">

    $("#subm_tc").click(function () {
        if($("#modlgn-tc").is(':checked')){
            alert('checked');
        } else {
            alert('unchecked');
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果我将该元素包装在div中并听取对该div的点击,则它可以正常工作,但您需要在按钮外单击.

我怎样才能解决这个问题?

谢谢

UPDATE.我设法通过在提交按钮上添加一个假div并在该div上侦听事件来解决这个问题(我还将z-index更改为-200以启用对按钮本身的点击):

<div style="position:relative">
<div id="subm_tc" style="position: absolute; left: 0px; right: 0px; bottom: 0px; top: 0px; z-index: 99999;"></div>
<input id="subm_tc" class="btn btn-primary" type="submit" disabled="" value="Log in" name="Submit">
</div>
Run Code Online (Sandbox Code Playgroud)

现在它按预期工作

javascript jquery

6
推荐指数
1
解决办法
2万
查看次数

如何优化(最小化)jQuery AJAX调用

我有来自我的代码的不同功能的50多个AJAX调用.所有这些调用都有类似的结构,具有不同的data/url/callback参数:

var jqXHR = $.post('/dba/port.php', {
        mode: "del_wallfunds",
        pdata: cdata,
        wname: wName
    },
    function (data) {}, "json")
    .done(function (data) {
        var msg = data.msg;
        if (msg.indexOf("Error") == -1) {
            alertify.success(msg);
            delSelected(selGroup);
        } else {
            alertify.error(msg);
        }
    })
    .fail(function () {
        alertify.error("Error .....");
    });
Run Code Online (Sandbox Code Playgroud)

我在想如何编写一个函数来返回var jqXHR以最小化代码的总大小.传递所有静态变量(如URL,错误字符串等)不是问题.但问题是".done"上的所有回调函数都不同,我不知道如何将这些回调函数作为变量传递.

一种方法是在.done上调用单个"通用"函数并将"switch"变量传递给该函数,但它似乎不是一个优雅的解决方案.

有什么建议如何以优雅的方式?

谢谢

javascript ajax jquery

5
推荐指数
1
解决办法
2715
查看次数

如何在Chrome中打印时更改纸张尺寸

抱歉这是一个太简单的问题,但很长一段时间我找不到答案.我使用此jQuery代码将Chrome中的iFrame保存为pdf:

$("#ifr").get(0).contentWindow.print();
Run Code Online (Sandbox Code Playgroud)

一切都很好,但Chrome总是采用Letter格式输出.我需要增加纸张尺寸或定义自定义纸张尺寸.

有许多参考资料表明Chrome应该从 Win 7中的默认打印机获取纸张大小.但更改默认打印机打印选项(纸张大小,布局等)不会影响Chrome打印 - 无论默认情况如何,它都会采用Letter格式打印机设置.

Chrome从哪里获取打印页面大小设置?我该怎么改变它?

谢谢

javascript google-chrome

5
推荐指数
0
解决办法
5986
查看次数

Highcharts:单击事件以获取热图

我在热图上遇到点击事件有问题:只有在点击工具提示时才有效,但在图表本身上却没有.查看演示http://jsfiddle.net/3UWaA/1/

    chart: {
        type: 'heatmap',
        events: {
            click: function(event) {
                alert("clicked!");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

有任何建议如何解决这个问题?

谢谢

highcharts

5
推荐指数
1
解决办法
2574
查看次数

PHP日期间隔 - 错误的月份差异

看看这段代码:

  $first = DateTime::createFromFormat('Y-m', '2001-07');
  $last = DateTime::createFromFormat('Y-m', '1998-06');
  $interval = $first->diff($last);
  echo "m diff: ".$interval->m." y diff: ".$interval->y."\n";
Run Code Online (Sandbox Code Playgroud)

输出为m diff:0 y diff:3

为什么它会返回错误的月份差异?

有趣的是,如果我将日期更改为"2001-08"和"1998-07",则会返回正确的月份间隔== 1.

谢谢!

php

4
推荐指数
1
解决办法
1524
查看次数

错误的月份(二月) - DateTime :: createFromFormat

字符串的日期转换返回第2个月(2月)的错误值:

$dtformat = 'Y-m-01';
$curDate = DateTime::createFromFormat('Y-m', '1996-02');
print_r($curDate);
$dt     = $curDate->format($dtformat);
echo $dt."\n";
Run Code Online (Sandbox Code Playgroud)

而不是"1996-02-01",它返回"1996-03-01".这是$currDate数组:

DateTime Object ( 
    [date] => 1996-03-02 01:19:01 
    [timezone_type] => 3 
    [timezone] => America/New_York 
)
Run Code Online (Sandbox Code Playgroud)

所有其他月份工作正常.我在这里错过了什么?

谢谢!

php

3
推荐指数
2
解决办法
1469
查看次数

格式化日期作为该月的第一天/最后一天

我有"Ym"格式的日期字符串.这一天与此无关.现在我需要从这些日期字符串创建另一个日期,这一天应该是该月的第一天或最后一天.我试过这段代码:

$curDate = DateTime::createFromFormat('Y-m', $datestring1);
$dt =  $curDate->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

这里的问题是它创建了当月的日期.如何强制它在第1天或最后一天进行?

谢谢

php

1
推荐指数
1
解决办法
942
查看次数

数组引用:将对象添加到对象数组

这可能是一个非常基本的问题 - 请参阅一个简单的代码:

var ar1=[];
var ar2=[];
ar1[0] = 'Constant';
ar1[1] = data.attr.const;
ar2.push(ar1);  //OK, ar2 contains one array of two correct elements

ar1[0] = 'R-squared';
ar1[1] = data.attr.rsq;
ar2.push(ar1);   // Not OK - ar2 contains 2 identical arrays

ar1[0] = 'R-sq. adjusted';
ar1[1] = data.attr.rsqadj;
ar2.push(ar1);   // Not OK - ar2 contains 3 identical arrays
Run Code Online (Sandbox Code Playgroud)

问题是每次执行ar2.push(ar1)时,它都会覆盖ar2的所有元素.执行此代码后,我得到一个包含3个相同数组的对象.我该如何解决?

谢谢

javascript

0
推荐指数
1
解决办法
45
查看次数

标签 统计

php ×6

javascript ×4

jquery ×3

mysql ×2

ajax ×1

arrays ×1

google-chrome ×1

highcharts ×1

join ×1

json ×1

mysqli ×1

post ×1

sql ×1

transactions ×1

union ×1