Модуль Drupal JQuery PHP скрипт проблема с расположением - PullRequest
1 голос
/ 11 ноября 2011

Я занимаюсь разработкой модуля, в котором есть скрипт jQuery с некоторым кодом AJAX.Код ajax вызывает скрипт php, расположенный в том же месте, что и скрипт jQuery.

Моя проблема в том, что AJAX добавляет имя домена перед именем скрипта PHP, и, конечно же, мой скрипт там не существует.местоположение и поэтому процесс прерывается.

Код AJAX выглядит следующим образом:

    $(document).ready(
    function(){

        $.ajax({
          url: "/testscript.core.php",
          asych: false,
          success: function($data){
            $('textarea#edit-simplechat-messages').text( $data );
          }
        });

    }
);

И вот ссылка, которая отображается в firebug:

http://testsite.co.uk/testscript.core.php

Опять же, сценарий jQuery и сценарий php находятся в одном каталоге. Я думал, что косая черта перед именем моего сценария php удалит имя домена, но это не сработало.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Используйте

Drupal.settings.basePath

url: Drupal.settings.basePath+'your file path',

Эта ссылка может быть полезной

http://www.akchauhan.com/how-know-base-path-of-drupal-in-javascript/

РЕДАКТИРОВАТЬ:

Или вы можете использовать этот подход, если вы создаете свой собственный модуль, затем выполните следующие действия

1] Сначала создайте свой модуль, здесь мой модуль называется «mymodule», поэтому я создал имя файла mymodule.module

<?php

function mymodule_init() {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/mymodule.js');
    // this call my js file when module is initialized.
}

function mymodule_menu(){
    $items = array();

    $items['mypath'] = array(
        'title' => t('To get series of the selected brand'),
        'page callback' => 'mymodule_page',
        'page arguments' => array(1),
             // get test_parameter from url, which is your first argument
             //http://domain.com/mypath/test_parameter
             // here mypath is arg(0), and test_parameter is arg(1)
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );

    return $items;
}

function mymodule_page($termID){
    return drupal_json(array('message'=> $itemID));
}

2] Во-вторых, создайте файл js с тем же именем, поэтому назовите его mymodule.js в том же файле модуля.

// $Id$

Drupal.behaviors.mymodule = function (context) {
    var $basepath = Drupal.settings.basePath;
    $('selector').change(function(e){
        $.ajax({
            type: 'POST',
            url: $basepath+'mypath/test_parameter',
                    // test_parameter :value you are sending to you module.
            dataType:'json',
            cache:false,
            beforeSend:function(){              

            },
            success:function(data){
                alert(data.message);
            },
            complete:function(){

            },
            error:function(xhr, status, error){

            }
        });
    });  
}

Обратите внимание, в файле js я использовал mypath. Ваш js-файл будет вызывать этот путь, который определен в hook_menu ().

0 голосов
/ 11 ноября 2011

так, как сейчас, похоже, ваша проблема - это косая черта перед именем файла .. это означает "домен web root"

...