AJAX中的POST方法

时间:2014-01-26 07:41:48

标签: php jquery ajax forms post

我使用post方法传递变量但不能传递完整的变量值。

这是脚本:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    var problem_code = $("#problem_code").val();
    var code = $("#code").val();
    var lang = $("#lang").val();
    $.ajax({
        type: "POST",
        url: "ajax.php",
        cache:false,
        data : {problem_code:problem_code,code:code,lang:lang},
        success: function(html)
        {
            //alert("ajax response returned.. ");
            //console.log(html);
            $(".show-result").empty();
            $(".show-result").append('<br>' + html);
        }
    })

});
</script>

以下是其余部分

<?php 
$code=stripcslashes($_POST['code']);
$lang=stripcslashes($_POST['lang']);
?>

获取$ code和$ lang值通过另一个文件“Submit.php”

现在使用输入隐藏字段

    <input type="hidden" id="problem_code" name="problem_code" value=<?php echo $problem_code;?> >
<input type="hidden" id="code" name="code" value=<?php echo ($code);?> >
<input type="hidden" id="lang" name="lang" value=<?php echo $lang;?> >

但是在使用隐藏字段传递$ code值时,它会显示意外行为。

这是在脚本

上运行时的视图源示例
<input type="hidden" id="problem_code" name="problem_code" value=LUCPAL >
<input type="hidden" id="code" name="code" value=#include <iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int main() {
int t;
scanf("%d",&t);
while(t--)
{
    long long int A,B,copy,sum=0;
    scanf("%lld %lld",&A,&B);
    copy=B;
    int digit=0;
    while(copy>0)
    {
        digit++;
        copy=copy/10;
    }
    while(digit--)
    {
        sum=10*sum+9;
    }
    long long int sum2=sum/2,diffA,diffB;
    if(sum2>=A && sum2<=B)
    {
        printf("%lld
",(sum2)*(sum2+1));
    }
    else
    {
        diffA=fabs(sum2-A);
        diffB=fabs(sum2-B);
        if(diffA<diffB)
            printf("%lld
   ",A*(sum-A));
        else
        printf("%lld
    ",B*(sum-B));

    }
}
// your code goes here
return 0;
}
>

<input type="hidden" id="lang" name="lang" value=11 >
`
    printf("%lld\n",A*(sum-A) become  printf("%lld

    ",A*(sum-A));

只有'#include'从所有代码传入ajax.php。

1 个答案:

答案 0 :(得分:2)

替换你所有的&lt;和&gt;使用&gt;&lt;(无论如何,在值=“...”部分) 帖子请求会认为您正在错误地关闭标签并在第一个&gt;处切断(小于)符号。 编辑: 像这样:

<input type="hidden" id="problem_code" name="problem_code" value=LUCPAL >
<input type="hidden" id="code" name="code" value='#include &gt;iostream&lt;
#include&gt;stdio.h&lt;
#include&gt;math.h&lt;
using namespace std;
int main() {
int t;
scanf("%d",&t);
while(t--)
{
    long long int A,B,copy,sum=0;
    scanf("%lld %lld",&A,&B);
    copy=B;
    int digit=0;
    while(copy&lt;0)
    {
        digit++;
        copy=copy/10;
    }
    while(digit--)
    {
        sum=10*sum+9;
    }
    long long int sum2=sum/2,diffA,diffB;
    if(sum2&lt;=A && sum2&gt;=B)
    {
        printf("%lld
",(sum2)*(sum2+1));
    }
    else
    {
        diffA=fabs(sum2-A);
        diffB=fabs(sum2-B);
        if(diffA&gt;diffB)
            printf("%lld
   ",A*(sum-A));
        else
        printf("%lld
    ",B*(sum-B));

    }
}
// your code goes here
return 0;
}'
>

<input type="hidden" id="lang" name="lang" value=11 >
`
    printf("%lld\n",A*(sum-A) become  printf("%lld

    ",A*(sum-A));