Javascript для отправки или получения вызова на URL и возврата текста, который находится на странице - PullRequest
0 голосов
/ 22 декабря 2011

Я пытался делать это все утро. Мне нужно сделать POST или GET вызов на этот

URL http://cabbagetexter.com/send.php

Мне нужно, чтобы он возвратил текст, которыйна странице я знаю, что это не может быть так сложно, но я полностью заблокировал код на этом, я пытался использовать функции JQuerys .post и .get, но я не могу вернуть только текст на странице

любая помощь будет оценена

РЕДАКТИРОВАТЬ: Ах, хорошо, так что есть техническая причина для невозможности сделать это.шары, спасибо за помощь, ребята

Ответы [ 5 ]

3 голосов
/ 22 декабря 2011
(function ($) {
  $.ajax({
    url: 'http://cabbagetexter.com/send.php',
    type: 'text',
    success: function (response) {
      //do something with the text from the site
    }
  });
}(jQuery));

Очевидно, что вам нужно разместить этот скрипт на URL, который вы загружаете, из-за той же политики происхождения

2 голосов
/ 22 декабря 2011

Если вы находитесь в одном домене, вы должны использовать такой код:

var ajax = new XMLHttpRequest();
ajax.onreadystatechange=function()
  {
  if (ajax.readyState==4 && ajax.status==200)
    {
    document.getElementById("targetElementID").textContent = ajax.responseText;
    }
  }
ajax.open("GET","http://cabbagetexter.com/send.php",true);
ajax.send();

Узнайте, как использовать AJAX

Если нет, то, извините, вам не повезло, потому что вы столкнетесь с той же политикой происхождения ошибка.

2 голосов
/ 22 декабря 2011

Вы столкнулись с междоменным ограничением. Вы можете только запросить страницу в том же домене.

1 голос
/ 22 декабря 2011

Существует еще одна возможность, если вам нужно разместить вызовы на странице в другом домене.Допустим, ваш Javascript запускается из index.php.Вы можете создать файл с именем ctexter.php.ctexter.php будет использовать curl для отправки запроса на http://cabbagetexter.com/send.php,, а затем будет выводить ответ (вывод из) send.php.Итак, если index.php выполняет ajax-вызов ctexter.php, а ctexter.php выводит ответ из send.php, вы фактически достигли своей цели.эта функция:

function post_request($url, $data) {
    $output = array();
    foreach ($data as $key => $value) {
        if(is_object($value) || is_array($value)){
            $data[$key] = serialize($value);
        }
    }
    $output = array();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($ch);
    if ($result) {
        $output['status'] = "ok";
        $output['content'] = $result;
    } else {
        $output['status'] = "failure";
        $output['error'] = curl_error($ch);
    }
    curl_close($ch);
    return $output;
}

где $ url (очевидно) - это URL для публикации, а $ data - это ассоциативный массив, содержащий данные, которые вы хотите отправить.

Затем на ctexter.php вы можете сделать что-то вроде:

// Since we already built the post array in the
// ajax call, we'll just pass it right through
$response = post_request("http://cabbagetexter.com/send.php", $_POST);
if($response['status'] == "ok"){
    echo $response['content'];
}
else{
    echo "It didn't work";
}

Наконец, нажмите ctexter.php, используя JQuery .post () :

$.post("ctexter.php", 
{ 
    firstparamname: "firstparamvalue", 
    somethingelse: "llama" 
},
function(data) {
  alert("It worked! Data Loaded: " + data);
});
0 голосов
/ 17 февраля 2012

Существует способ сделать запрос на этот URL и обойти ту же политику происхождения.Поместите что-то вроде PHP-скрипта в свой собственный домен, который делает запрос к http://cabbagetexter.com/send.php, а затем вызовите свой собственный скрипт из javascript.

Если ваш хост поддерживает PHP и cURL, скрипт будет выглядеть такработа:

<?php
$url="http://cabbagetexter.com/send.php";
$post="";   
if(strstr($url,"?")){
    $split=explode("?",$url);
    $url=$split[0];
    $post=$split[1];
}
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0); 

if($post!=""){
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}else{
    curl_setopt($ch, CURLOPT_POST, 0); 
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
$result = curl_exec($ch);
curl_close($ch); 
print $result;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...