Google Visualization API загрузки jQuery с Ajax

В этом конкретном примере вы можете использовать метасимвол regex \ b, чтобы соответствовать началу или концу слова (граница слова)

import re

text = "I need help. I need 5.4 dollar."

a = re.compile('\b(\.)')
print(a.sub('\n',text))
24
задан Nakilon 3 May 2013 в 16:06
поделиться

8 ответов

Я помню, когда я использовал 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)); 
        }
    });  
});
25
ответ дан Athafoud 28 November 2019 в 23:52
поделиться

Я знаю, что это старая ветка, но это может помочь другим.
Я столкнулся с той же проблемой сейчас, и она очень похожа (если не совпадает), которую я имел ранее с кодом 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 ожидает следующей строки кода, которая никогда не появится, поскольку при открытии нового документа удаляется исполняемый.

2
ответ дан balazs 28 November 2019 в 23:52
поделиться

Не могли бы вы предоставить образец возвращаемых данных? Вы можете напрямую вызвать 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);                                                   
}}); 
1
ответ дан Darkyo 28 November 2019 в 23:52
поделиться

Я совсем не знаком с 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/

0
ответ дан dimvic 28 November 2019 в 23:52
поделиться

Получите дескриптор окна (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»);

-121--1296427-

Вот функция, которая обеспечивает гибкое форматирование даты в 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));                                                   
    }
}); 
0
ответ дан 28 November 2019 в 23:52
поделиться

Похоже, вам не хватает библиотеки Google, которая предоставляет визуализацию. Вы уверены, что включили все необходимые скрипты Google?

0
ответ дан 28 November 2019 в 23:52
поделиться

Это своего рода выстрел в темноту:

google.setOnLoadCallback (function () { drawData (html) });

Возможно, ссылка на html теряется, и требуется закрытие.

1
ответ дан 28 November 2019 в 23:52
поделиться

Я использую систему вкладок на основе 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. Не знаю, поможет ли это, но удачи.

0
ответ дан 28 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: