Парсинг URL формы jQuery AJAX - PullRequest
0 голосов
/ 02 июня 2011

В основном я пытаюсь отправить видео вместе с другой информацией через jQuery в PHP для записи в текстовый файл для последующего чтения.

Существует способ ввода URL-адреса видео.У меня все работает, кроме одной вещи.

Если я проставлю это через: http://www.youtube.com/watch?v=g1lBwbhlPtM, то все отлично работает.

, но это: http://www.youtube.com/watch?v=g1lBwbhlPtM&feature=feedu не.

Я провел несколько тестов, и это потому, что когда я отправляю второй URL через & feature = feedu, его читают как отдельное значение $ _POST.

Это проблема:

    var dataString = 'title='+title+'&content='+content+'&date='+date+'&Submit=YES'; 

потому что его чтение вроде

var dataString = 'title='+title+'&content='+IMAGES, TEXT AND STUFF+'&feature=feedu OTHER IMAGES AND STUFF&date='+date+'&Submit=YES';

выходит за пределы текстовой области, которая может включать изображения или текст и прочее, поэтому я ищу что-то вроде htmlspecialchars (), чтобы разобраться& перед отправкой через ajax

Есть идеи, как решить эту проблему?

РЕДАКТИРОВАТЬ: Вот полный код, который проблема:

    var title = $('input#title').val(); 
    var content = $('textarea#content').val();
    var date = $('input#date').val();
    var dataString = 'title='+title+'&content='+content+'&date='+date+'&Submit=YES'; 
    //alert (dataString);return false;
    $.ajax({
     type: "POST",
     url: "./inc/php/file.php",
     dataType: "json",
     data: dataString,
     success: function(data) {
        if(data.error == true){
             $('.errordiv').show().html(data.message);
        }else{
             $('.errordiv').show().html(data.message);
             $(':input','#addstuff')
                .not(':button, :submit, :reset, :hidden')
                .val('')
                .removeAttr('checked')
                .removeAttr('selected');
        }
       },
       error: function(data) {
        $('.errordiv').html(data.message+' --- SCRIPT ERROR');
       }

    })
    return false;

, если содержимое равно:

&content= <br>Text 1<br> <img>http://someimage.com/image.jpg</img> 
<br> Text2<br> <vid>http://www.youtube.com/watch?v=isDIHIHI&feature=feedu</vid> 
<br>Text 3<br>

переменная содержимого передается через вызов ajax как:

&content= <br>Text 1<br> <img>http://someimage.com/image.jpg</img> 
<br> Text2<br> <vid>http://www.youtube.com/watch?v=isDIHIHI

с дополнительной переменной, равной

&feature=feedu</vid> 
<br>Text 3<br>

Так как же остановить чтение ajax& особенность как отдельная переменная $ _POST?

Ответы [ 3 ]

0 голосов
/ 03 июня 2011

Я использовал этот бит кода в php-файле

if(isset($_POST['feature'])){
    $content=htmlspecialchars_decode(stripslashes(nl2br("<br />".$_POST['content'].'&feature='.$_POST['feature']."<br />")));
}

Но он не очень динамичный, поскольку он применяется только к URL-адресам YouTube

0 голосов
/ 03 июня 2011

В JS (до Ajaxing)

dataString = encodeURI(dataString);

А затем декодировать его на PHP

$dataString = urldecode($_POST['data']);

Или сделать:

 $.ajax({
     type: "POST",
     url: "./inc/php/file.php",
     dataType: "json",
     data: {
       'title': $('input#title').val(),
       'content': $('textarea#content').val(),
       'date': $('input#date').val(),
       'Submit': 'Yes'
     }
     success: function(data) {
        if(data.error == true){
             $('.errordiv').show().html(data.message);
        }else{
             $('.errordiv').show().html(data.message);
             $(':input','#addstuff')
                .not(':button, :submit, :reset, :hidden')
                .val('')
                .removeAttr('checked')
                .removeAttr('selected');
        }
       },
       error: function(data) {
        $('.errordiv').html(data.message+' --- SCRIPT ERROR');
       }

    })
0 голосов
/ 02 июня 2011

Вы encodeURI() перед тем, как передать URL своего видео?

Если вам это нужно в PHP, тогда URLEncode

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