2015-04-30 4 views
-3

Добрый день, кто читает. Я прошу помощи в ситуации, которую я не могу решить .... Пожалуйста, помогите мне. У меня есть php-файл, main.php есть кнопка, которая создает фрейм, загруженный с frame.html. созданный javascript (оригинал :) (не jquery)). Также, чтобы проверить форму на фрейме, я использую jQuery. В результате мы имеем три файла:jQuery не работает, но без ошибок

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/frame.js"></script> 
<script type="text/javascript" src="js/framejq.js"></script> 

Однако, когда я загрузил страницу и/или кадр, на Firefox отладчик показывают только два файла - jquery.js и frame.js. (не framejq.js). Если я добавлю код из framejq.js в frame.js - frame.js перестает работать и вообще не создает фрейм. Я имею в виду, что jquery работает, но файл отсутствует. Я даже попробую добавить в framejq.js следующий код:

jQuery.noConflict(); 
jQuery(document).ready(function(){ 
//some code 
}); 

Но это не поможет. он по-прежнему не работает. Я пробовал разные библиотеки jquery. Но я могу "т найти, почему он не работает

frame.js. - создать рамку и загрузить его из frame.html

function frame_reg() { 
    reg=document.createElement('iframe'); 
    document.body.appendChild(reg); 
    reg.id='iframe'; 
    reg.src='frame.html'; 
    // some manipulations 
    return false; 
} 

framejq.js - работа с формой в рамке

$(function() { 
    $('.error').hide(); 
    $(".button").click(function(){ 
    var name = $("input#username").val(); 
    if (name== "") 
     { $("label#username_error").show(); 
      $("input#username").focus(); 
      return false; } 
     // other similar options 
    }); 
}); 

$.ajax ({ 
    type: "POST", 
    url: "sign_up.php", 
    data: datastr, 
    success: close_frame 
}); 

Вот основные вещи в файлах остальное является подобной или просто функцией для изменения CSS-файлов. Пожалуйста, помогите мне найти проблему.

проблемы, что браузер как-то не загружает framejq.js. это не вижу этого. Если я поместил код из framejq.js в frame.js. Frame.js прекратить работу, браузер остановить увидеть его тоже ...

фото:

http://postimg.org/image/l30ax1z8f/ http://postimg.org/image/a4d0ydr6j/

+4

Уверен 'успех: close_frame();' должен быть 'успех: close_frame' для Начало. Вы хотите назначить функцию, а не называть ее. – Andy

+1

В framejq.js '$ .ajax' пропускает 2 запятые в' type' и 'url', также говорит о том, что говорит консоль отладки (нажмите F12, а затем переключитесь на вкладку« Консоль »), также у вас есть точка с запятой'; 'после' close_frame() ', но это не должно быть после объекта. –

+2

Вам не хватает coma (',') после сообщения Post? 'type:" POST ",'? – christiandev

ответ

4

Вам не хватает 2 запятых и вызывают функцию :success сразу и после этого звонка имеют завершающую полуточку. Ваша консоль должна была орать синтаксические ошибки на вас, так что лучше проверить свои инструменты первый :)

$.ajax ({ 
    type: "POST", 
    url: "sign_up.php", 
    data: datastr, 
    success: close_frame 
}); 

Вы должны указать функцию по имени, а не называть его.

Обычный способ обеспечения обратных вызовов является с анонимной функцией обертку, как это:

$.ajax ({ 
    type: "POST", 
    url: "sign_up.php", 
    data: datastr, 
    success: function(data){ 
     close_frame(); 
    } 
}); 

но если параметры не используются, или вызываемая функция имеет соответствующий ряд параметров, вы можете укороченный это первая версия (просто введите имя функции).

+0

Это моя проблема. Я не могу исправить ошибки, потому что framejq.js не загружается, он показывает только два из трех файлов frame.js, jquery.js ... Отладчик не показывает никаких ошибок вообще, потому что это не так, Посмотрите файл. –

+0

@alex_mike: Это совсем другой вопрос. Можете ли вы предоставить скриншот содержимого вашей папки и полного HTML-страницы? –

1

Легче объяснить здесь, вы, кажется, не хватает запятых здесь ...

$.ajax ({ 
    type: "POST" 
    url: "sign_up.php" 
    data: datastr, 
    success: close_frame(); 
}); 

Должно быть ...

$.ajax ({ 
    type: "POST", 
    url: "sign_up.php", 
    data: datastr, 
    success: close_frame 
}); 
+0

Я только удалил скобки, забыл о ';', я исправил ее сейчас. Я спешил, чтобы получить ответ :) – christiandev

+1

Тем не менее, downvoter должен был сказать _why_ они были опущены, поэтому christiandev мог улучшить свой ответ. –

+0

Достаточно честно. Так я и сделал, и твой тоже, потому что это то же самое;) –

-1

Если вы пытаетесь получить доступ к элементам внутри iframe из кода на содержащей странице, попробуйте использовать $('#iframe').contents(), как показано ниже.Но вы также должны исправить две недостающие запятые и зафиксировать success обратного вызова, так что это не вызов функции сразу .:

$(function() { 
    $('.error').hide(); 
    $(".button").click(function() { 
     var name = $('#iframe').contents().find("input#username").val(); 
     if (name == "") { 
      $('#iframe').contents().find("label#username_error").show(); 
      $('#iframe').contents().find("input#username").focus(); 
      return false; 
     } 
     // other similar options 
    }); 
}); 

$.ajax({ 
    type: "POST", 
    url: "sign_up.php", 
    data: datastr, 
    success: function(info) { 
     close_frame(); 
    } 
}); 
+0

Пропущен неправильный обратный вызов 'success', исправил его – DelightedD0D

Смежные вопросы