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