通过ajax在php中发布上传文件的值

通过ajax在php中发布上传文件的值,php,ajax,Php,Ajax,我们正试图通过AJAX发布一个数据字符串,如下所示 // if CAPTCHA is correctly entered! if ($resp->is_valid) { echo $tmpName; ?> <script type="text/javascript"> $(document).ready(function(){ alert("in ready

我们正试图通过AJAX发布一个数据字符串,如下所示

// if CAPTCHA is correctly entered!                       
    if ($resp->is_valid) {  echo $tmpName; ?> 


                      <script type="text/javascript">

$(document).ready(function(){

   alert("in ready");
        var name = "<?php echo $_POST['name']; ?>";

        var email = "<?php echo $_POST['email']; ?>";
        var state = "<?php echo $_POST['state']; ?>";
        var contact = "<?php echo $_POST['phone']; ?>";
         var message = "<?php echo strtr($_POST['message'], array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />')); ?>";


        // Returns successful data submission message when the entered information is stored in database.
       var dataString = 'name1='+ name + '&email1='+ email + '&state1='+ state + '&contact1='+ contact + '&message1='+ message +'&tmpName1='+ "<?php echo $tmpName ?>" +'&fileType1='+ "<?php echo $fileType ?>" +'&fileName1='+ "<?php echo $fileName ?>"; 


       alert(dataString);

        if(name==''||email==''||contact=='')
        {
            alert("Please Fill All Fields");
        }
        else
        {
        // AJAX Code To Submit Form.
            $.ajax({
                type: "POST",
                url: "mailer.php",
                data: dataString,
                cache: false,
                success: function(result){
                    alert(result);
                }
            });
        }
        return false;

});
//如果验证码输入正确!
如果($resp->is_valid){echo$tmpName;?>
$(文档).ready(函数(){
警报(“准备就绪”);
var name=“”;
var email=“”;
var state=“”;
var contact=“”;
var message=“”;
//当输入的信息存储在数据库中时,返回成功的数据提交消息。
var dataString='name1='+name+'&email1='+email+'&state1='+state+'&contact1='+contact+'&message1='+message+'&tmpName1='+'+'&fileType1='+'+'&fileName1='+';
警报(数据串);
如果(姓名=“”| |电子邮件=“”| |联系人=“”)
{
警告(“请填写所有字段”);
}
其他的
{
//提交表单的AJAX代码。
$.ajax({
类型:“POST”,
url:“mailer.php”,
数据:dataString,
cache:false,
成功:功能(结果){
警报(结果);
}
});
}
返回false;
});
当我们试图得到tmpName1的值,但我们不能得到它,但像name1一样,我们可以得到该值。有人可以就这个问题提出建议吗


谢谢!

您可以使用不同的方法来命名值

var dvals = {};

dvals = {
    name1: name,
    email1: email,
    ...
};
就我个人而言,我不这样做,我也不是100%确定为什么,但我知道我在我的代码中使用

var dvals = {};
dvals['name1'] = name;
dvals['email1'] = email
...

你可以用它来确定每个名字,然后用dvals替换AJAX代码中的
dataString
。我不确定为什么你的
dataString
会不正确,但我知道我停止使用它是因为我不断遇到的随机问题让我觉得它不可靠。这就是为什么我改用abov方法的原因e、

您需要在发布时获取它-这意味着如果您这样写:

dataString = {name_1:name, course_1:course},
然后,您必须使用您指定的名称检索它:
name\u 1
course\u 1
,否则它将不起作用。

这是正确的方法:

var dataString = 'name1='+ name + '&email1='+ email + '&state1='+ state + '&contact1='+ contact + '&message1='+ message +'&tmpName1=<?php echo $tmpName ?>&fileType1= <?php echo $fileType ?>&fileName1=<?php echo $fileName ?>';
var dataString='name1='+name+'&email1='+email+'&state1='+state+'&contact1='+contact+'&message1='+message+'&tmpName1=&fileType1=&fileName1=';
但这样更好:

var tmpName = '<?php echo $tmpName ?>'||'',
fileType    = '<?php echo $fileType ?>'||'',
fileName    = '<?php echo $fileName ?>'||'';

var params = {
    name1:name,
    email1:email,
    state1:state,
    contact1:contact,
    message1:message,
    tmpName1:tmpName,
    fileType1:fileType,
    fileName1:fileName
}

alert(params);

        if(name==''||email==''||contact=='')
        {
            alert("Please Fill All Fields");
        }
        else
        {
        // AJAX Code To Submit Form.
            $.ajax({
                type: "POST",
                url: "mailer.php",
                data: params,
                cache: false,
                success: function(result){
                    alert(result);
                }
            });
        }
        return false;
var tmpName=''||'',
文件类型=“”| |“”,
文件名=“”| |“”;
变量参数={
名字1:名字,
email1:email,
国家1:国家,
联系人1:联系人,
信息1:信息,
tmpName 1:tmpName,
fileType1:fileType,
fileName1:fileName
}
警报(参数);
如果(姓名=“”| |电子邮件=“”| |联系人=“”)
{
警告(“请填写所有字段”);
}
其他的
{
//提交表单的AJAX代码。
$.ajax({
类型:“POST”,
url:“mailer.php”,
数据:params,
cache:false,
成功:功能(结果){
警报(结果);
}
});
}
返回false;

在哪里设置
name
变量。请同时显示相关的HTML代码。在print varName之后添加一个半彩色从来都不是错误的,除了我的回答,比如@MarcoMura说,你可能应该在每个
echo
语句之后设置
。这可能会使你的PHP代码出错而无法执行。请记住,你应该这样做如果要在客户端使用这些值,请在服务器端保留这些值。这意味着,如果在JavaScript进入页面之前没有正确声明这些值,那么它将无法工作。感谢您的回复!但请检查编辑的值。它似乎正在工作。