В этом конкретном примере вы можете использовать метасимвол regex \ b, чтобы соответствовать началу или концу слова (граница слова)
import re
text = "I need help. I need 5.4 dollar."
a = re.compile('\b(\.)')
print(a.sub('\n',text))
Я помню, когда я использовал Google API, в нем явно говорилось, чтобы сначала инициализировать загрузку. Поэтому, возможно, держите функцию google.load вне AJAX, а затем просто продолжайте вызывать вторую часть вашей функции в случае успеха:
//Straight Away!
google.load('visualization', '1', {'packages': ['annotatedtimeline']});
$(document).ready(function(){
// Get TIER1Tickets
$("#divTendency").addClass("loading");
$.ajax({
type: "POST",
url: "getTIER1Tickets.php",
data: "",
success: function(html){
// Succesful, load visualization API and send data
google.setOnLoadCallback(drawData(html));
}
});
});
Я знаю, что это старая ветка, но это может помочь другим.
Я столкнулся с той же проблемой сейчас, и она очень похожа (если не совпадает), которую я имел ранее с кодом CMS:
на странице:
<div id='targetdiv'></div>
<script type="text/javascript">
$(document).ready( function () {
$('#targetdiv').load('...some url...');
});
</script>
часть сценария загружается с помощью ajax:
<script type="text/javascript">
document.write("hello");
</script>
В результате получается страница с текстом «привет», которая выглядит так, как будто она все еще загружается. Это вызвано методом document.write. Поскольку скрипт загружается в уже готовый и закрытый документ, браузер открывает новый, и я предполагаю, что механизм javascript ожидает следующей строки кода, которая никогда не появится, поскольку при открытии нового документа удаляется исполняемый.
Не могли бы вы предоставить образец возвращаемых данных? Вы можете напрямую вызвать drawData (html):
$.ajax({
type: "POST",
async: false,
url: "getTIER1Tickets.php",
data: "",
success: function(html){
// Succesful, load visualization API and send data
google.load('visualization', '1', {'packages': ['annotatedtimeline']});
//You are already in a callback function, better like this ?
drawData(html);
}});
Я совсем не знаком с API Google, но я думаю, что «html» в обратном вызове на самом деле является json или скрипт, вы можете попробовать опцию $ .ajax 'dataType':
$.ajax({
type: "POST",
url: "getTIER1Tickets.php",
dataType: "json",//"script"
data: "",
success: function(html){
// Succesful, load visualization API and send data
google.load('visualization', '1', {'packages': ['annotatedtimeline']});
google.setOnLoadCallback(drawData(html));
}
});
дополнительная информация: http://api.jquery.com/jQuery.ajax/
Получите дескриптор окна (hwnd), а затем используйте эту функцию user32.dll:
VB.net объявление:
Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer
C # объявление:
[DllImport("user32.dll")] public static extern int SetForegroundWindow(int hwnd)
Одно соображение состоит в том, что это не будет работать, если окно свернуто, поэтому я написал следующий метод, который также обрабатывает этот случай. Вот код C #, он должен быть довольно прямым, чтобы перенести его в VB.
[System.Runtime.InteropServices.DllImport("user32.dll")]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
private static extern bool ShowWindow(IntPtr hWnd, ShowWindowEnum flags);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SetForegroundWindow(IntPtr hwnd);
private enum ShowWindowEnum
{
Hide = 0,
ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3,
Maximize = 3, ShowNormalNoActivate = 4, Show = 5,
Minimize = 6, ShowMinNoActivate = 7, ShowNoActivate = 8,
Restore = 9, ShowDefault = 10, ForceMinimized = 11
};
public void BringMainWindowToFront(string processName)
{
// get the process
Process bProcess = Process.GetProcessesByName(processName).FirstOrDefault();
// check if the process is running
if (bProcess != null)
{
// check if the window is hidden / minimized
if (bProcess.MainWindowHandle == IntPtr.Zero)
{
// the window is hidden so try to restore it before setting focus.
ShowWindow(bProcess.Handle, ShowWindowEnum.Restore);
}
// set user the focus to the window
SetForegroundWindow(bProcess.MainWindowHandle);
}
else
{
// the process is not running, so start it
Process.Start(processName);
}
}
Используя этот код, он будет таким же простым, как установка соответствующих переменных процесса и вызов CountingMainWindowToFront («processName»);
Вот функция, которая обеспечивает гибкое форматирование даты в UTC. Он принимает строку формата, похожую на строку SimpleDateFormat Java:
function formatDate(date, fmt) {
function pad(value) {
return (value.toString().length < 2) ? '0' + value : value;
}
return fmt.replace(/%([a-zA-Z])/g, function (_, fmtCode) {
switch (fmtCode) {
case 'Y':
return date.getUTCFullYear();
case 'M':
return pad(date.getUTCMonth() + 1);
case 'd':
return pad(date.getUTCDate());
case 'H':
return pad(date.getUTCHours());
case 'm':
return pad(date.getUTCMinutes());
case 's':
return pad(date.getUTCSeconds());
default:
throw new Error('Unsupported format code: ' + fmtCode);
}
});
}
Вы можете использовать ее так:
formatDate(new Date(timestamp), '%H:%m:%s');
-121--1699936- Вы пытались сделать это как синхронный запрос AJAX? Обратите внимание на приведенную ниже настройку async .
$.ajax({
type: "POST",
async: false,
url: "getTIER1Tickets.php",
data: "",
success: function(html){
// Succesful, load visualization API and send data
google.load('visualization', '1', {'packages': ['annotatedtimeline']});
google.setOnLoadCallback(drawData(html));
}
});
Похоже, вам не хватает библиотеки Google, которая предоставляет визуализацию. Вы уверены, что включили все необходимые скрипты Google?
Это своего рода выстрел в темноту:
google.setOnLoadCallback (function () {
drawData (html)
});
Возможно, ссылка на html теряется, и требуется закрытие.
Я использую систему вкладок на основе AJAX и интерактивные визуализации линейных диаграмм Google в одном из своих проектов и столкнулся с подобной кирпичной стеной.
Из-за присущей AJAX блокировки междоменных сценариев вы не можете загрузить API javascript Google (http://www.google.com/jsapi) или любые другие внешние ресурсы.
А поскольку условия обслуживания Google запрещают автономное (т.е. "не размещенное на Google") использование их API визуализации, вы не можете легально получить копию скриптов и разместить их самостоятельно, как это требуется.
Я попробовал хитрый обходной путь, включив файл под названием "get_vis.php" вместо "visualization_page.php" в мои вкладки; где содержимое "get_vis.php":
<?php
echo file_get_contents('http://domain.com/path/to/visualization_page.php');
?>
Но не повезло, похоже, единственный способ заставить API загружаться правильно - это настроить параметры безопасности так, чтобы разрешить взаимодействие с серверами Google. Не знаю, поможет ли это, но удачи.