Интересно, что ни один из ответов на этой странице не упоминает два крайних случая, надеюсь, никто не возражает, если я их добавлю:
Родовые словари в .NET не являются потокобезопасными, а иногда могут бросать NullReference
или даже (чаще) a KeyNotFoundException
при попытке получить доступ к ключу из двух параллельных потоков. Исключение в этом случае является довольно ошибочным.
Если код NullReferenceException
задан кодом unsafe
, вы можете посмотреть на переменные указателя , и проверьте их на IntPtr.Zero
или что-то в этом роде. Это одно и то же («исключение нулевого указателя»), но в небезопасном коде переменные часто переводятся в типы значений / массивы и т. Д., И вы ударяете головой о стену, задаваясь вопросом, как тип значения может исключение.
(Еще одна причина для небезопасного использования небезопасного кода, если вам это нужно)
http://en.wikipedia.org/wiki/JSONP#Script_element_injection
Выполнение вызова JSONP (другими словами, для использования этого шаблона использования) , требуется элемент сценария. Поэтому для каждого нового запроса JSONP браузер должен добавить (или повторно использовать) новый элемент - другими словами, вставить элемент в HTML DOM с требуемым значением для атрибута «src». Затем этот элемент оценивается, URL-адрес src извлекается и оценивается JSON-ответ.
blockquote>Теперь посмотрим на вашу ошибку:
Uncaught SyntaxError: Unexpected token & lt;
blockquote>
<
- это первый символ любого тэга html, возможно, это начало<DOCTYPE
, в данном случае, это , конечно , недопустимый JavaScript.И НЕТ, вы не можете использовать JSONP для извлечения html-данных.
Если вы действительно хотите использовать клиента для блокировки HTML-файла, я предлагаю использовать flyJSONP, который использует YQL .. или использует jankyPOST, который использует некоторые сладкие методы:
jankyPOST создает скрытый iframe и заполняет его формой (iframe [0] .contentWindow.document.body.form.name).
Затем он использует HTML5 (смотреть устаревшие браузеры!) API webMessaging для публикации в другом iframe и устанавливает iframe's
Отправляет форму на удаленный сервер ... done.
Или вы можете просто использовать завиток PHP, проанализировать его, эхо и т. д.
IDK, если что именно ур использует его, но я надеюсь, что это поможет.
ТАКЖЕ ... Я уверен, что вы можете JSONP что-либо, что является результатом кода сервера. Я сделал это с помощью ClientLogin, просто выполнив JSONPing на странице keyGen и успешно завершил запись в журнал, даже если это были теги b / w. У меня были некоторые другие ошибки, но я считаю, что я очистил этот вывод.
В настоящее время я пытаюсь сделать то, что вы есть, поэтому я отправлю сообщение в случае успеха.
Сначала вызовите URL-адрес AJAX вручную и посмотрите на полученный HTML-код.
Во-вторых, вам нужно закрыть свой DIV в своем примере скрипта.
Я не думаю, что это возможно. JSONP требует, чтобы ответ отображался правильно.
Если вы хотите другое решение, как насчет загрузки URL-адреса в iframe и попытки поговорить через iframe. Я не на 100% уверен, что он сработает, но это того стоит.
Я сделал то, что вы хотите, но в моем случае я контролирую код на стороне сервера, который возвращает HTML. Итак, что я сделал, был обернут код HTML в одном из свойств Json возвращаемого объекта и использовал его на стороне клиента, например:
callback({"page": "<html>...</html>"})
Синтаксическая ошибка, с которой вы сталкиваетесь, потому что библиотека вы используете expects json, но ответ - это HTML, только это.
У меня есть три слова для вас: Same Origin Policy
Если удаленный URL-адрес фактически не поддерживает правильные запросы JSONP, вы не сможете делать то, re пытается. И это хорошо.
Изменить: вы могли бы, конечно, попытаться проксировать запрос через ваш сервер ...