2016-05-24 1 views
4

У меня есть пользовательский веб-сайт, который проверяет document.ready, если в URL-строке есть параметр, называемый «temp». Если это так, я вызываю PHP-функцию на моем сервере, которая сохраняет значение в базе данных. Теперь самое странное для меня является то, что если вручную ввести это:Веб-сайт не распознает GET, хотя работает ручной URL-адрес

http://mywebsite.org/?temp=7

в моем браузере, все работает отлично. Но если я использую этот сайт, чтобы проверить GET:

http://requestmaker.com/

мой сайт ничего не делает.

Это мой JQuery код, который проверяет наличие параметра:

$(document).ready(function() { 
     var data = gup('temp', location.href); 
     if (data != undefined) { 
     $.ajax({ 
      data: { 
      action: 'insertTemp', 
      value: data 
      }, 
      type: "GET", 
      url: "SQL.php", 
      success: function(data) { 
      //alert("Data Saved " + data); 
      }, 
      error: function(xhr) { 
      alert(xhr.responseText); 
      } 
     }); 
     } 

Как вы думаете, что document.ready может быть проблемой, потому что не проверяется на автоматизированных HTML-запросов?

Edit:

Gup является функцией я скопировал из Интернета, это только фильтры для параметра в URL:

function gup(name, url) { 
    if (!url) url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)", "i"), 
    results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

Он объявлен вне пункта document.ready().

Это код ответа я получаю от requestmaker.com:

http://pastebin.com/WL2CQP4v

+0

Вы заглянули в консоль своего браузера за ошибки? Где вы определяете 'gup()'? –

+0

Привет, спасибо за ваш комментарий, нет, мой браузер не бросает anny erros, gup - это просто функция, которую я скопировал из Интернета, которая фильтрует URL-адрес для параметров: 'function gup (name, url) { if (! url) url = window.location.href; name = name.replace (/ [\ [\]]/g, "\\ $ &"); var regex = new RegExp (" [? &] "+ Name +" (= ([^ & #] *) | & ## $) "," i "), results = regex.exec (url); if (! results) return null; if (! results [2]) return ''; return decodeURIComponent (результаты [2] .replace (/ \ +/g, "")) } ' – binaryBigInt

+0

Как насчет запроса/ответа на вкладке сети инструментов разработчика вашего браузера? –

ответ

1

Это происходит потому, что requestmaker.com только отправка запроса и показывая вам ответ. Это не выполнение веб-страницы в веб-браузере/браузере.

Вы не писали, какова ваша конечная цель, но если она предназначена для автоматического тестирования и, может быть, вы должны проверить travis-ci, phantomjs или аналогичные инструменты.

+0

Спасибо за ваш ответ. Моя цель - отправить данные на веб-страницу и автоматически сохранить их в базе данных. Я также попытался отправить HTML-GET на свой веб-сайт из настольного приложения с тем же результатом, что мой сайт не сохранил данные, и я не знаю почему. Я думаю, что 'requestmaker' просто делает то же самое, что и мое настольное приложение - он отправляет html-запрос. Конечно, это не выполняется в браузере, потому что обычно ему не нужен браузер для отправки данных через html-запрос на веб-сайт (на самом деле это потребует много ресурсов), но он все равно должен работать. – binaryBigInt

+0

Вообще говоря, есть две части веб-сайта: клиентская и серверная. Что вы делаете (проверка параметра url, отправка запроса ajax) осуществляется с клиентской стороны. Но среды, которые вы тестируете, не выполняют клиентскую сторону. Из чего я понимаю вашу цель: вы должны написать весь код на стороне клиента. Сделайте index.php, который читает $ _GET ['temp'] и перенаправляет вашу цель (SQL.php). Ex: 'header ('Location: /SQL.php?action=insertTemp&value ='. $ _ GET ['temp']);' NB: это действительно плохой код. Вы надлежащим образом вводите санитарию пользователя в продукт. – Sarim

1

Проблема в том, что ваш внедренный код ECMA (Javascript) зависит от выполняемого браузера. «Document.ready» не будет запущен без браузера.

+0

Хорошо ... Но как я могу это сделать? – binaryBigInt