解析URL jQuery AJAX表单


Parsing URL jQuery AJAX form

基本上,我试图通过jQuery将视频和其他信息发送到PHP,然后写入一个txt文件,以便稍后读取。

有一种方法可以将视频url输入其中。除了一件事,我什么都做了。

如果我把它通过:http://www.youtube.com/watch?v=g1lBwbhlPtM它运行良好。

但是:http://www.youtube.com/watch?v=g1lBwbhlPtM&feature=feedu没有。

我做了一些测试,这是因为当我通过&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';

它超出了一个可以包括图像或文本之类的文本区域,所以我正在寻找类似htmlspecialchar()的东西来解决这个问题;在通过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变量?

您在传递视频url之前是否encodeURI()

如果你在PHP中需要它,那么URLEncode

我在php文件中使用了这段代码

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

但它不是很动态,因为它只适用于youtube URL

在JS do中(在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');
       }
    })