Решение проблемы двойного URL ..? - PullRequest
0 голосов
/ 30 июля 2010

Я использую CakePHP У меня есть 2 ссылки:

<a href="#" tabindex="1" onclick="base_load_demo1('http://www.boxyourtvtrial.com/widget/beer/main/');" >beer</a>
<a href="#" tabindex="2" onclick="base_load_demo('http://www.boxyourtvtrial.com/widget/cocktail/main/');">cocktail</a>

Со следующим JavaScript:

var Url1 = "http://www.boxyourtvtrial.com/widget/cocktail/main/";
var Url2 = "http://www.boxyourtvtrial.com/widget/beer/main/";
var Url3 = "http://www.boxyourtvtrial.com/widget/beer/mini/";

function base_load_demo(Url) {
  remoteCall(Url1,"","mainLeftContent");
  //remoteCall("SCRIPT_PATH","QUERY_STRING","TARGET_FUNCTION");
}

function base_load_demo1(Url2) {
  remoteCall(Url2,"","mainLeftContent");
  //remoteCall("SCRIPT_PATH","QUERY_STRING","TARGET_FUNCTION");
}

Когда я нажимаю на первую ссылку, она показывает ее содержимое через вызов ajax, нокогда я нажимаю на вторую ссылку, появляется ошибка выдачи:

Отсутствует контроллер

Ошибка: Http: контроллер не найден.

Ошибка: создайтеКласс Http: Контроллер ниже в файле: app / controllers / http: controller.php

<?php
class Http:Controller extends AppController {

    var $name = 'Http:';
}
?>

Примечание: если вы хотите настроить это сообщение об ошибке, создайте приложение / views / errors /missing_controller.ctp

и на вкладке консоли FireFox

POST http://www.boxyourtvtrial.com/widget/beer/main/http://www.boxyourtvtrial.com/widget/cocktail/main/

Как мы можем решить этот двойной URL-вызов на одном и том жевремя?

var xmlHttp;
var uri = "";
var callingFunc = "";
var sResponse = new Array();



function remoteCall(sUrl, sQueryStr, sCalledBy)
{
    alert(sUrl);
    var resStr = "";
var str = " { ";
if(sQueryStr != "") {
    var arr1 = new Array();
    arr1 = sQueryStr.split("&");
    if(arr1){
        for(i=0;i<=arr1.length;i++)
        {
            if(arr1[i] && arr1[i] != "") 
                              {
                var arr2 = new Array();
                arr2 = arr1[i].split("=");
                str += arr2[0]+":'"+arr2[1]+"' ,";

              }
        }
    }
}                   

    str += " tp: 'tp' } ";


    $.ajax({
        type: "GET",     
        url: sUrl,
        data: sQueryStr,
        dataType: "html",
        success: function(data) {
            $("#"+sCalledBy).html(data);
            //jih(sCalledBy,data);
        }
    });

  /*    $.get(sUrl,sQueryStr,function(data) {   
    jih(sCalledBy,data);
    });*/
}

function jih(divid,data)
{
         if(document.getElementById(divid))
                     document.getElementById(divid).innerHTML=data;
    }

1 Ответ

1 голос
/ 30 июля 2010

После вашего первого вызова на любую из этих страниц он загружается:

<script type="text/javascript" src="http://www.boxyourtvtrial.com/widget/cocktail/main/js/common.js"></script>

в шапке. Внутри common.js есть функция remoteCall , которая перезаписывает вашу локальную функцию remoteCall.

Функция remoteCall внутри common.js добавляет

var url= WIDGET_WEG_PATH+scr_url;

, где WIDGET_WEG_PATH = "http://www.boxyourtvtrial.com/widget/beer/main/"

и scr_url = "http://www.boxyourtvtrial.com/widget/beer/main/" (первый параметр новой функции remoteCall)

Вот почему вы получаете удвоенный URL в посте.

Решение:

Переименуйте локальную функцию remoteCall в нечто отличное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...