Ajax отправляет первые пустые данные - PullRequest
0 голосов
/ 13 июня 2011

Эта часть моего кода, где я думаю, проблема в:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript">

matches = google.contentmatch.getContentMatches();
    $(document).ready(function()
    {
        var messageid
        for(var match in matches)
        {
            for(var key in matches[match])
            {
                if(key == 'message_id')
                {
                    messageid = matches[match][key];
                }

            }
        }




        var name = "Email Test";
        var url = 'https://mail.google.com/mail/u/0/#all/' + messageid;
        var encodedurl = encodeURIComponent(url);
        var dataValues = "name=" + name + "&url=" + encodedurl;
        $('#crmbtn').click(function(){
            $.ajax({
                type: 'GET',
                data: dataValues,
                url: 'http://someurl',
                success: function(){
                     alert('Sent To CRM')
                }
            });
            return false;
        });
    });
gadgets.window.adjustHeight(50);
</script>

    <form id="myForm">
        <input type='button'  name='submit' id='crmbtn' value='Send To CRM' />
    </form>

Проблема в том, что мой код делает то, что я хочу, но вместо того, чтобы отправлять мои данные, сначала он отправляет пустые данные на мою другую страницу php, а затем отправляет правильные данные. Я догадываюсь, как я кодировал свою функцию AJAX.

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Это просто дикая догадка (мне нужно увидеть больше кода ...), но если #crmbtn - ссылка, вам нужно изменить:

$('#crmbtn').click(function(){

до:

$('#crmbtn').click(function(event){
    event.preventDefault();

Для предотвращения открытия связанной страницы.

Редактировать: Исходя из вашего обновления, я думаю, что это проблема, вы, возможно, отправляете форму, и без атрибута action форма отправляется сама себе.

1 голос
/ 13 июня 2011

Вам также необходимо encodeURIComponent параметр name:

var name = encodeURIComponent("Email Test");
…
var dataValues = "name=" + name + "&url=" + encodedurl;

Более того, лучше связать это событие с обработчиком submit вашей формы и предотвратить , что действие, например:

<form id="myForm">
    <input type='submit' name='submit' id='crmbtn' value='Send To CRM' />
</form>

(изменено type на submit) и

$('#myForm').submit(function(){ …

И когда вы перебираете объекты, всегда проверяйте hasOwnProperty:

for(var match in matches)
{
    if (matches.hasOwnProperty(match)) {
        …
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...