【发布时间】:2014-05-13 16:30:01
【问题描述】:
我正在使用Penny 拍卖主题,我收到以下错误消息:
Uncaught SyntaxError: Unexpected token < penny_scripts.js:126
当我展开它显示的错误时:
(anonymous function) penny_scripts.js:126
$.ajax.success smart-updater.js:146
j jquery.js?ver=1.11.0:2
k.fireWith jquery.js?ver=1.11.0:2
x jquery.js?ver=1.11.0:4
b jquery.js?ver=1.11.0:4
penny_scripts.js 的第 126 行是
var myObj = eval("(" + data + ")");
for (var i = 0; i < myObj.length; i++) <---This line
{
pid = myObj[i].pid;
rnd = myObj[i].rnd;
remaining_time = myObj[i].remaining_time;
current_bid = myObj[i].current_bid;
如果我这样做alert(data);,那么我会收到以下消息
functions.php 的第 1092 行是:
$info = array(); global $wpdb;
$my_arr = $_POST['my_values'];
$OKOK = $_POST['OKOK'];
foreach($my_arr as $id_plus_rand)
{
$exp = explode("_",$id_plus_rand);
$pid = $exp[0];
$rnd = $exp[1];
//----------------------
$newpid = array();
$highest_bidder_id = PennyTheme_get_highest_bid_owner_obj($pid);
if($highest_bidder_id == false) $highest_bidder = "0";
else {
$s = "select user_login from ".$wpdb->users." where ID='{$highest_bidder_id->uid}'";
$r = $wpdb->get_results($s); $r = $r[0];
$highest_bidder = $r->user_login;
}
$newpid['highest_bidder'] = $highest_bidder;
$newpid['highest_bidder_id'] = $highest_bidder_id->id;
$newpid['pid'] = $pid;
$newpid['rnd'] = $rnd;
$newpid['remaining_time'] = get_post_meta($pid, 'ending', true) - current_time('timestamp',0);
$newpid['current_bid'] = PennyTheme_get_show_price(get_post_meta($pid, 'current_bid', true));
if($OKOK == "1"):
//$closed = get_post_meta($pid, 'closed', true);
//$post = get_post($pid);
$bids = "select * from ".$wpdb->prefix."penny_bids where pid='$pid' order by id DESC limit 13";
$res = $wpdb->get_results($bids);
$all_bids = '';
if(count($res) > 0)
{
$all_bids .= '<table width="100%">';
$all_bids .= '<thead><tr>';
$all_bids .= '<th>'.__('Username','PennyTheme').'</th>';
$all_bids .= '<th>'.__('Bid Amount','PennyTheme').'</th>';
// echo '<th>'.__('Date Made','PennyTheme').'</th>';
$all_bids .= '</tr></thead><tbody>';
//-------------
foreach($res as $row)
{
$user = get_userdata($row->uid);
$s = "select user_login from ".$wpdb->users." where ID='{$row->uid}'";
$r = $wpdb->get_results($s);
$all_bids .= '<tr>';
$all_bids .= '<th>'.$r[0]->user_login.'</th>';
$all_bids .= '<th>'.PennyTheme_get_show_price($row->bid).'</th>';
// echo '<th>'.date("d-M-Y H:i:s", $row->date_made).'</th>';
$all_bids .= '</tr>';
}
$all_bids .= '</tbody></table>';
}
else $all_bids .= __("No bids placed yet.", 'PennyTheme');
$newpid['bidders'] = $all_bids;
endif;
array_push($info,$newpid);
}
header('Content-type: application/json'); <---Line 1092
smart-update.js 的第 146 行是:
if(es.rCallback && rCallback && es.rCallback.search(rCallback) != -1) {
window[rCallback](data);
} else {
es.callback(data); <---This line
}
plugin.php 的第 1395 行:
function remove_menu_page( $menu_slug ) {
global $menu;
foreach ( $menu as $i => $item ) { <-- This line
if ( $menu_slug == $item[2] ) {
unset( $menu[$i] );
return $item;
}
}
return false;
}
我仅在我未登录网站或使用用户级别低于Contributor 的帐户登录时收到此错误消息。
我不确定为什么会发生这种情况或如何解决此问题。任何帮助表示赞赏。
【问题讨论】:
-
错误出现在 PHP 中 -
wp-admin/includes/plugin.php的第 1395 行中的foreach循环尝试迭代不同于数组的内容。错误消息阻止发送更多标头。此外,在预期 JSON 时会生成 HTML。 JS报错这里只是PHP问题的结果。您的 WP 插件有问题。 -
我已经添加了
plugin.php文件第 1395 行的内容。 -
显示第 1092 行之前的内容
-
@brasofilo,你是。另一个plugin 使用的是
admin_menu,我使用的是它的旧版本。更新插件后错误停止 -
很高兴知道。我不止一次看到通知和警告因此而被转储...然后溢出到您的 JS...
标签: javascript php jquery wordpress wordpress-theming