Drupal模块jQuery PHP脚本位置问题

我正在开发一个带有一些带有一些AJAX代码的jQuery脚本的模块。 ajax代码调用与jQuery脚本位于同一位置的php脚本。</ p>

我的问题是,AJAX将域名附加到PHP脚本名称前面,当然还有我的脚本 在该位置不存在,因此进程中断。</ p>

AJAX代码如下:</ p>

  $(document).ready  (
function(){

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

}
);
</ code> </ pre>

以下是firebug中显示的链接:</ p>

  http://testsite.co.uk/testscript.core.php
</ code> </ pre >

再次,jQuery脚本和php脚本位于同一目录中。</ strong>
我认为在我的php脚本名称之前的正斜杠会消除域名,但它没有 工作。</ p>
</ div>

展开原文

原文

I am developing a module which has a jQuery script with some AJAX code. The ajax code calls a php script located in the same location as the jQuery script.

My problem is, AJAX appends the domain name in front of the PHP script name and of course, my script does not exist at that location and so the process breaks.

The AJAX code is as follows:

    $(document).ready(
    function(){

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

    }
);

And the following is the link that shows up in firebug:

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

Again, the jQuery script and the php script are in the same directory. I thought the forward slash before my php script name would eliminate the domain name but it did not work.

2个回答

Use

Drupal.settings.basePath

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

This link might be useful

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

EDIT :

Or you can use this approach if you are creating your own custom module then follow these steps

1] First create your module, Here my module name is "mymodule", So i created a file name 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] Secondly create js file with the same name so name it mymodule.js under the same module file.

// $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){

            }
        });
    });  
}

Notice in js file i have used mypath. your js file will call this path which is defined in the hook_menu().

dongmanzui8486
dongmanzui8486 结帐我编辑的答案。 如果您按照这些步骤操作,那么您不需要创建.jp文件来调用.jp文件。
接近 9 年之前 回复
down101102
down101102 谢谢,这很有效
接近 9 年之前 回复
ds2321
ds2321 不要包含/在您的文件名之前。
接近 9 年之前 回复



现在的方式看起来你的问题 </ strong>是文件名之前的斜杠..这意味着 “域名网络根”</ p>
</ div>

展开原文

原文

the way it is now it looks like your problem is the slash before the file name.. that means "domain web root"

dongli7870
dongli7870 我尝试了脚本的完整路径但仍然出错
接近 9 年之前 回复
dongxian3852
dongxian3852 听起来像是一个网址重写问题..你是否尝试输入你希望在浏览器中使用ajax调用的网址,看看你是否得到任何东西(或重定向)?
接近 9 年之前 回复
drhdjp97757
drhdjp97757 没有斜线,我得到以下内容:testsite.co.uk/node/testscript.core.php。 在我的模块结构中甚至没有“节点”目录
接近 9 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐